Différence de date en heures minutes et secondes sous SQL Server





03-17-2017, 11:43 AM (Ce message a été modifié le : 05-19-2017 09:56 AM par EO-Manager.)
Message : #1

Edit_128x128 Différence de date en heures minutes et secondes sous SQL Server


Comment calculer la différence entre deux dates, c'est à dire une date de début et une date de fin en affichant le nombre d'heures, de minutes et de secondes sous SQL Server?

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.

-- On déclare 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'

-- 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, si on ne veux pas avoir les heures si elles dépassent le nombre 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)


Une troisième solution pour transformer les secondes en heures minutes et secondes sous SQL Server, cette fois sans les millisecondes :

SELECT CONVERT(varchar, DATEADD(ms, 14400 * 1000, 0), 108) AS [Heures Minutes Secondes]
Trouver tous les messages de cet utilisateur
Citer ce message dans une réponse


Articles ou discussions similaires
Pivoter des lignes en colonnes avec la requête PIVOT sous SQL Server
Requête SELECT simple sous SQL Server
Comment créer une procédure stockée simple sous SQL Server
Requête INSERT OR UPDATE sous SQL SERVER