¿Cómo calcular la diferencia entre dos fechas SQL Server en horas minutos y segundos?

Tres scripts diferentes escritos en T-SQL para calcular la diferencia entre dos fechas de SQL Server en horas, minutos y segundos.

Utiliza la función DATEDIFF() de SQL Server nos permite calcular la diferencia entre dos fechas, pero sólo en una unidad. Por ejemplo, sólo segundos, o sólo minutos o sólo horas. Por lo tanto, calcular la diferencia entre una fecha inicial y una fecha final no es sencillo con SQL Server. Este tutorial muestra cómo hacerlo con una simple consulta de ejemplo, explicada paso a paso.

1. Obtener los segundos, minutos y horas en 3 consultas SQL Server

Como ejemplo, esta sencilla consulta SQL utiliza DATEDIFF() con dos marcas de tiempo que tienen exactamente una hora de diferencia. Y cada consulta da una sola unidad. Así que básicamente, debemos combinar o concatenar varias consultas para obtener las horas, minutos y segundos dentro de una única consulta SQL. A continuación, cada consulta devuelve una unidad.

-- Declarar e inicializar dos variables con exactamente una hora de diferencia: 9 - 8 = 1h 
DECLARE @DateStart    DATETIME
DECLARE @DateEnd    DATETIME
SET @DateStart    = '2017-03-10 08:00:00'
SET @DateEnd    = '2017-03-10 09:00:00'

-- La consulta SQL devuelve la diferencia en segundos : 3600 segundos
SELECT DATEDIFF(SECOND, @DateStart, @DateEnd) AS [Diferencia en segundos]

-- La consulta SQL devuelve la diferencia en minutos : 60 minutos
SELECT DATEDIFF(MINUTE, @DateStart, @DateEnd) AS [Diferencia en Minutos]

-- La consulta SQL devuelve la diferencia en horas : 1 hora
SELECT DATEDIFF(HOUR, @DateStart, @DateEnd)  AS [Diferencia en Horas]

A continuación, se muestran dos formas diferentes de calcular la diferencia horaria entre dos fechas. O en un formato más conciso, utilizando sólo 3 líneas de código, pero calculando sólo la diferencia en horas:

-- Declarar e inicializar dos variables con exactamente una hora de diferencia: 9 - 8 = 1h 
DECLARE @DateStart DATETIME = '2022-03-10 08:00:00',
        @DateEnd   DATETIME = '2022-03-10 09:00:00';

-- SQL Query returns difference in hours : 1 hour
SELECT DATEDIFF(HOUR, @DateStart, @DateEnd) AS [Difference in Hours];

A continuación se muestra una captura de pantalla después de la ejecución de la consulta utilizando SSMS.

Calcular la diferencia entre dos fechas de SQL Server en horas y minutos con DATEDIFF
Calcular la diferencia entre dos fechas de SQL Server en horas y minutos con DATEDIFF

2. Diferencia entre dos fechas en una sola consulta T-SQL

Para obtener la diferencia en horas, minutos y segundos, utilice esta consulta, sólo funciona si las horas son menores que 99. Cambie el total en segundos en horas, minutos y segundos, por ejemplo, con 3 horas = 3600 * 3 = 14400.

DECLARE @TimeInSeconds INT
SET    @TimeInSeconds = 14400

SELECT
RIGHT('0' + CAST(@TimeInSeconds / 3600 AS VARCHAR),2) + ':' +
RIGHT('0' + CAST((@TimeInSeconds / 60) % 60 AS VARCHAR),2) + ':' +
RIGHT('0' + CAST(@TimeInSeconds % 60 AS VARCHAR),2)

3. Calcular la diferencia entre fechas utilizando las funciones Convert y Dateadd de SQL Server

Estas consultas SQL calculan la diferencia de tiempo usando primero los segundos (multiplicado por una hora en segundos es 60 * 60 = 3600. A continuación, utilizando los milisegundos (multiplicado por una hora en milisegundos como 60 * 60 * 1000 = 3600 * 1000). Finalmente muestra el resultado sin los milisegundos usando la función CONVERT y el formato de fecha de los datos 108.

-- Utilizando los segundos como base para la conversión
select CONVERT(varchar, dateadd(s, 3 * 3600 , getdate()), 108) AS [Horas Minutos Segundos]

-- Utilizando los milisegundos como base para la conversión
select CONVERT(varchar, dateadd(ms, 3 * 3600 * 1000, getdate()), 108) AS [Horas Minutos Segundos]

Conclusión sobre las diferencias de fechas con SQL Server Convert y Dateadd

En este breve post hemos visto cómo calcular una diferencia de fecha de SQL Server en horas minutos y segundos. Aquí está la documentación oficial de Microsoft SQL Server sobre la función de tiempo DATEADD. Aquí están los tutoriales para gestionar las tablas de SQL Server, es decir, cómo crearlas, modificarlas y eliminarlas con scripts T-SQL.

¿Te ha sido útil? Si es así, ¡utilízala y compártela!

Be the first to comment

Leave a Reply

Tu dirección de correo no será publicada.


*