Cómo calcular la diferencia entre dos fechas 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.
Tabla de contenidos
1. Obtener los segundos, minutos y horas en 3 consultas
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.
2. Diferencia entre dos fechas en una sola consulta
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 las fechas con Convert y Dateadd
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]
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