Salut!!
je voudrais savoir quel est l'équivalent de SEC_TO_TIME en Oracle?
SEC_TO_TIME permet de convertir des secondes en heures, minutes ,secondes.
Merci pour votre aide!!
Version imprimable
Salut!!
je voudrais savoir quel est l'équivalent de SEC_TO_TIME en Oracle?
SEC_TO_TIME permet de convertir des secondes en heures, minutes ,secondes.
Merci pour votre aide!!
Code:
1
2
3
4
5
6 SQL> select numtodsinterval(9999,'SECOND') from dual; NUMTODSINTERVAL(9999,'SECOND') --------------------------------------------------------------------------- +000000000 02:46:39.000000000
si tu recherches un varchar2, il te faut un peu de formattage
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 SQL> create or replace function sec_to_time(seconds number) 2 return varchar2 is 3 i interval day to second; 4 begin 5 i:=numtodsinterval(seconds,'SECOND'); 6 return extract(day from i)*24+extract(hour from i)||':'|| 7 abs(extract(minute from i))||':'|| 8 abs(extract(second from i)); 9 end; 10 / Function created. SQL> SQL> select sec_to_time(-123456) from dual; SEC_TO_TIME(-123456) -------------------------------------------------------------------------------- -34:17:36
J'ai essayé ta 1ère solution et ça ne marche que si je lui fournis le nombre de secondes entier or dans mon cas je veux convertir un champ de type (date_fin-date_début) qui retourne des valeurs de ce genre:
0,119247685185185
0,0960069444444444
0,0281018518518519
0,0143171296296296
Est ce que tu aurais une idée sur une éventuelle solution?!!
Merci!!
là tu as des jours pas des secondes
Code:
1
2
3
4
5
6 SQL> SELECT numtodsinterval(0.119247685185185,'DAY') from dual; NUMTODSINTERVAL(0.119247685185185,'DAY') --------------------------------------------------------------------------- +000000000 02:51:42.999999999
éventuellement
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 SQL> create or replace function diff_between_dates(debut timestamp, fin timestamp) 2 return varchar2 is begin 3 return extract(day FROM (fin-debut))*24+extract(hour FROM (fin-debut))||':'|| 4 to_char(abs(extract(minute FROM (fin-debut))),'FM00')||':'|| 5 to_char(abs(extract(second FROM (fin-debut))),'FM00'); 6 end; 7 / Function created. SQL> SQL> select diff_between_dates( 2 to_date('2000-01-01 10:20:30','YYYY-MM-DD HH24:MI:SS'), 3 to_date('2001-02-03 04:05:06','YYYY-MM-DD HH24:MI:SS') 4 ) from dual; DIFF_BETWEEN_DATES ------------------ 9569:44:36
Merci bcp ça a vraiment marché!!