Requêtes T-SQL pour calculer la différence entre des dates SQL en heures, minutes et secondes.
Comment calculer la différence entre deux dates SQL Server, soit une date de début et une date de fin et afficher le nombre d’heures, de minutes et de secondes ? En effet, la fonction DATEDIFF() de SQL Server permet de calculer les différences dans l’unité de temps voulue.
Par exemple en secondes, minutes et heures avec deux dates ayant exactement 1 heure de différence. Il faut toutefois combiner ou concaténer plusieurs requêtes pour arriver à obtenir les heures, minutes et les secondes dans une seule opération SQL. Voici trois solutions différentes avec du code T-SQL.
Table des matières
1. Calculer les secondes, les minutes et les heures en 3 requêtes
Tout d’abord, déclarer deux variables avec exactement une heure de différence. Cette première solution utilise trois requêtes distinctes pour les trois unités de temps.
DECLARE @DateDebut DATETIME DECLARE @DateFin DATETIME SET @DateDebut = '2017-03-10 08:00:00' SET @DateFin = '2017-03-10 09:00:00' -- Requête SQL Server pour la différence entre deux dates en SECONDES : 3600 SELECT DATEDIFF(SECOND, @DateDebut, @DateFin) AS [Durée en Secondes] -- Requête SQL Server pour la différence de dates en MINUTES : 60 SELECT DATEDIFF(MINUTE, @DateDebut, @DateFin) AS [Durée en Minutes] -- Requête SQL Server pour la différence de dates en HEURES : 1 SELECT DATEDIFF(HOUR, @DateDebut, @DateFin) AS [Durée en Heures]
2. Calculer la différence entre deux dates en une seule requête
Cette deuxième option n’affiche pas les heures si elles dépassent le nombre 99. Par ailleurs, merci au blog SQLAuthority pour le code de cette deuxième solution.
DECLARE @TempsEnSecondes INT -- Changer les secondes sur la ligne ci-dessous : exemple avec 1400 = 3600 * 3 soit 3 heures SET @TempsEnSecondes = 14400 SELECT RIGHT('0' + CAST(@TempsEnSecondes / 3600 AS VARCHAR),2) + ':' + RIGHT('0' + CAST((@TempsEnSecondes / 60) % 60 AS VARCHAR),2) + ':' + RIGHT('0' + CAST(@TempsEnSecondes % 60 AS VARCHAR),2) AS [Heures Minutes Secondes]
3. Afficher la différence entre deux dates sans les millisecondes
Cette requête utilise d’abord la fonction Dateadd pour additionner 3 heures en secondes à zéro. Elle retourne ainsi les heures, les minutes et les secondes. La fonction Convert renvoi le résultat au format date, sans les millisecondes. C’est à dire : 03:00:00.
SELECT CONVERT(VARCHAR, DATEADD(ss, 3*60*60, 0), 108) AS [Heures Minutes Secondes]
Conclusion sur la différence de dates SQL Server
Dans ce court tutoriel informatique, nous avons vu comment calculer une différence entre des dates du serveur SQL en heures, minutes et secondes en utilisant la fonction T-SQL Datediff. Parmi les nombreuses solutions possibles, il est recommandé d’utiliser plusieurs fonctions. Voici la documentation officielle de Microsoft SQL Server sur la fonction temporelle DATEADD().
Questions fréquentes sur les dates SQL Server
Pour calculer une différence de temps entre deux dates en heures, prenez les deux dates et heures et faites la différence en utilisant l’option HOUR combinée avec la fonction de temps DATEDIFF :
“SELECT DATEDIFF(HOUR, @DateStart, @DateEnd) AS [Différence en heures]”.
Pour calculer une différence de temps entre deux dates en minutes, utilisez les deux dates et heures et calculez la différence avec l’option MINUTE de la fonction SQL DATEDIFF :
“SELECT DATEDIFF(MINUTE, @DateStart, @DateEnd) AS [Différence en minutes]”.
Pour calculer la différence de temps exacte entre deux dates à la seconde près, faites la différence et utilisez l’option SECOND :
“SELECT DATEDIFF(SECOND, @DateStart, @DateEnd) AS [Différence en secondes]”.
Pour calculer précisément la différence de temps en millisecondes, utilisez la fonction de temps intégrée à T-SQL et le mot-clé MILLISECOND :
“SELECT DATEDIFF(MILLISECOND, @DateStart, @DateEnd) AS [Différence en millisecondes]”