Bonjour à tous,
étant un débutant sous sql. Je cherche à convertir un nombre de minutes en HH:MM.
Ex : 20 devient 00:20
Ex : 2582 devient 43:02
Merci de votre aide.
Bonne fin de journée
jejeadsl
Version imprimable
Bonjour à tous,
étant un débutant sous sql. Je cherche à convertir un nombre de minutes en HH:MM.
Ex : 20 devient 00:20
Ex : 2582 devient 43:02
Merci de votre aide.
Bonne fin de journée
jejeadsl
Je ne crois pas qu'il y ait directement une fonction heure, mais vous pouvez faire comme ceci :
Reste à concaténer le tout pour avoir une seule colonne si besoin ;)Code:
1
2
3
4
5
6
7
8
9
10 SELECT CASE WHEN INT(2582/60)<10 THEN '0'!!CHAR(INT(2582/60)) ELSE CHAR(INT(2582/60)) END ,CASE WHEN 2582-(INT(2582/60)*60) < 10 THEN '0'!!CHAR(2582-(INT(2582/60)*60)) ELSE CHAR(2582-(INT(2582/60)*60)) END
En utilisant une CTE ca donne
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 WITH TMP AS (SELECT CASE WHEN TRUNC(2582/60)<10 THEN '0'!!CHAR(TRUNC(2582/60)) ELSE CHAR(TRUNC(2582/60)) END AS XHH ,CASE WHEN 2582-(TRUNC(2582/60)*60) < 10 THEN '0'!!CHAR(2582-(TRUNC(2582/60)*60)) ELSE CHAR(2582-(TRUNC(2582/60)*60)) END AS XMM) SELECT RTRIM(XHH) !! ':' !! XMM FROM TMP ;
escartefigue tu te crois sur PostGreSQL ???
Solution :
A +Code:
1
2
3
4
5
6
7 WITH T AS (SELECT 2582 AS C), HM AS (SELECT C / 60 AS H, C % 60 AS M FROM T) SELECT CASE WHEN H < 10 THEN '0' ELSE '' END + CAST(H AS VARCHAR(2)) + ':' + CASE WHEN M < 10 THEN '0' ELSE '' END + CAST(M AS VARCHAR(2)) FROM HM
Bonjour,
y a t'il un interet particulier a utiliser une cte pour cette requete ?
personnellement j'ai également pensé au modulo et ferait comme ça:
Code:
1
2
3 declare @m as integer=2582 SELECT cast(@m/60 as varchar(8))+':'+left('0'+cast(@m%60 as char(2)),2) AS C
C'est juste un problème de clarté, ça n'est pas plus ni moins rapide !
Dans ta requête tu as oublié que les heures peuvent avoir des zéro devant apparemment.
A +