Différence de dates en heures minutes secondes avec SQL Server

Comment calculer la différence de dates SQL Server en heures minutes secondes ? C’est à dire une date de début et une date de fin en affichant 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.

Comment calculer la différence entre deux dates avec SQL Server en heures,  minutes et secondes ?

En effet, voici trois solutions différentes avec du code T-SQL.

Tout d’abord, déclarer deux variables avec exactement une heure de différence

DECLARE @DateDebut	DATETIME
DECLARE @DateFin	DATETIME

SET	@DateDebut	= '2017-03-10 08:00:00'
SET	@DateFin	= '2017-03-10 09:00:00'

Première solution, trois requêtes pour obtenir séparément les secondes, les minutes et les heures de manière séparée.

Pour commencer, cette première solution utilise trois requêtes distinctes pour les trois unités de temps.

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

Une deuxième façon de faire pour calculer la différence de dates SQL Server en heures,  minutes et secondes

Cette deuxième option n’affiche pas les heures si elles dépassent le nombre de 99.

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]

Par ailleurs, merci à SQLAuthority pour le code de la deuxième solution.

Une troisième solution pour transformer la différence de dates en heures minutes et secondes, cette fois sans les millisecondes

SELECT CONVERT(varchar, DATEADD(ms, 14400 * 1000, 0), 108) AS [Heures Minutes Secondes]

Comment calculer la différence de temps entre deux dates 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 de temps 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 de temps 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 la différence de temps 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 conclure, cet article expose 3 exemples de codes pour afficher les différence avec un format différent. Enfin, pour aller plus loin cet requête permet d’afficher la dernière date de modification d’une table SQL Server.

Soyez le premier à commenter

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.


*