Bonjour,

Après beaucoup de temps passé sans succès, j'en appelle au forum.

Ainsi, dans 1 table, j'ai 1 colonne déclarée en TIME.
Je n'arrive cependant pas à le restituer "proprement" dans mon appli sous XE5.

Sous ISQL, ci après quelques essais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
SQL> SELECT COL_TIME FROM TEST01;
 
     COL_TIME
=============
17:45:00.0000
17:45:00.0000
17:45:00.0000
15:00:02.0000
15:00:14.0000
 
SQL> SELECT extract(HOUR from COL_TIME)||':'||extract(MINUTE from COL_TIME)||':'||extract(SECOND from COL_TIME) FROM TEST01;
 
CONCATENATION
==========================
17:45:0.0000
17:45:0.0000
17:45:0.0000
15:0:2.0000
15:0:14.0000
 
SQL> SELECT SUBSTRING(100 + extract(HOUR from COL_TIME) FROM 2 FOR 2)||':'||SUBSTRING(100 + extract(MINUTE from COL_TIME) FROM 2 FOR 2)||':'||SUBSTRING(100 + extract(SECOND from COL_TIME) FROM 2 FOR 2) FROM TEST01;
 
CONCATENATION
==================================================================
17:45:00
17:45:00
17:45:00
15:00:02
15:00:14
C'est bien sûr ce dernier look que je souhaite

Dans mon appli, j'utilise les composants UIB, et un champ TIME (type interne uftTime = 14) est restitué sous forme d'un Cardinal :
Quelques valeurs:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
17:45:00 => 639000000
15:00:02 => 540020000
15:00:14 => 540140000
Mais comment passer du Cardinal à l'heure correspondante sachant que:
  • je ne dois pas être dépendant d'une PS ou de fonctions serveur
  • je ne peux pas faire 1 requête supplémentaire pour le type TIME (Cf. la 3ème sous ISQL): mon code exploite le type interne "uftxxxx" pour afficher chaque valeur dans 1 grille avec le bon format

Je suis preneur de toutes pistes...
PS: FB 2.1.7