Calculer la différence entre deux dates SQL Server en heures minutes et secondes

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.

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

Comment calculer la différence entre deux dates SQL en heures ?

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]”.

Comment calculer la différence entre 2 dates SQL Server en minutes ?

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]”.

Comment calculer la différence entre des dates en secondes ?

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]”.

Comment calculer une différence entre des horodatages en millisecondes ?

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]”

Pour aller plus loin avec les requêtes T-SQL

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Retour en haut