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.
Table of Contents
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.
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