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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Partager