Saltar al contenido

Trabajar con Horas en sql server

Trabajar con hora En SQL Server, puedes trabajar con horas sumándolas o restándolas utilizando la función DATEADD o utilizando una operación matemática. ademas contamos con GETUTCDATE que nos daria da la posibilidad e sumar o restar horas.

Deberias ver este articulo, para conocer las 4 formas para trabajar con horas horas, minutos y segundos!

Índice

    Como funciona DATEADD en Sql Server ?

    La función DATEADD y las fechas, ya es ampliamente conocida pero si te dijera que ademas te permite agregar o restar una cantidad de tiempo específica a una fecha o hora.

    La sintaxis básica es la siguiente:

    DATEADD (datepart, number, date)
    

    Donde datepart especifica la parte de la fecha que deseas ajustar (año, mes, día, hora, minuto, etc.), number especifica la cantidad de tiempo que deseas agregar o restar y date es la fecha o hora en la que deseas realizar el ajuste.

    Esta funcion es muy distinta a la de convertir fechas en sql server o el uso de la funcion format esta permite usar sumar o restar valores.

    Por ejemplo, si quieres agregar 3 horas a la hora actual, puedes hacer lo siguiente:

    SELECT DATEADD(hour, 3, GETDATE())
    

    También puedes restar tiempo de la misma manera, simplemente utilizando un número negativo como segundo argumento.

    Por ejemplo, si quieres restar 1 hora de la hora actual, puedes hacer lo siguiente:

    SELECT DATEADD(hour, -1, GETDATE())
    

    Además de la función DATEADD, también puedes realizar operaciones matemáticas simples para sumar o restar horas. dentro del mismo sql

    Como Sumar horas y restar en sql server?

    Por ejemplo, si quieres agregar 2 horas a una hora específica, puedes hacer lo siguiente:

    SELECT '2022-01-01 12:00:00' + 2/24
    

    Esto sumará 2 horas a la hora especificada, lo que resultará en ‘2022-01-01 14:00:00’. Del mismo modo, si quieres restar 2 horas, simplemente utiliza un signo menos antes de 2/24.

    GETUTCDATE o GETDATE cual deberia usar?

    GETDATE() o GETUTCDATE() son ambas funciones incorporadas en SQL Server que devuelven la fecha y hora actual. La diferencia entre ambas funciones es que GETDATE() devuelve la fecha y hora local del servidor en el que se ejecuta la consulta, mientras que GETUTCDATE() devuelve la fecha y hora UTC (Coordinated Universal Time), que es una hora estándar universal que se utiliza en todo el mundo.

    El uso de GETDATE() o GETUTCDATE() depende de tus necesidades y preferencias. Si necesitas una hora que esté sincronizada con la hora local del servidor, debes utilizar GETDATE(). Si necesitas una hora que sea independiente de la ubicación geográfica y se ajuste automáticamente a los cambios en el horario de verano, debes utilizar GETUTCDATE().

    Ejemplos horas DATEADD y GETUTCDATE

    Si te encuentras en una zona horaria que está 4 horas detrás de UTC, puedes utilizar la función DATEADD para ajustar la hora devuelta por GETUTCDATE() a la hora local. Aquí hay un ejemplo:

    SELECT DATEADD(hour, -4, GETUTCDATE())
    

    Esto devolverá la hora UTC actual, y luego restará 4 horas, ajustándola a la hora local de la zona horaria que está 4 horas detrás de UTC.

    Como cambiar la hora a una zona horaria ?

    También puedes utilizar la función SWITCHOFFSET para cambiar la hora a una zona horaria diferente, sin tener que ajustar manualmente la hora.

    Aquí hay un ejemplo:

    SELECT SWITCHOFFSET(GETUTCDATE(), '-04:00')
    

    Esto devolverá la hora UTC actual, y luego la ajustará automáticamente a la zona horaria especificada, en este caso -4 horas respecto a UTC.

    Como deberia usar el Datediff?

    La función DATEDIFF también puede ser utilizada para trabajar con horas en SQL Server. La función DATEDIFF se utiliza para calcular la diferencia en días, horas, minutos, segundos, etc., entre dos fechas o horas.

    Aquí hay un ejemplo de cómo utilizar DATEDIFF para calcular la diferencia en horas entre dos fechas:

    SELECT DATEDIFF(hour, '2022-01-01 10:00:00', '2022-01-02 12:00:00')
    

    Esto devolverá 26, que representa las 26 horas de diferencia entre las dos fechas especificadas.

    De esta manera, puedes utilizar DATEDIFF para calcular la diferencia en horas entre dos fechas o horas, y luego utilizar el resultado para realizar cálculos adicionales.

    Ejemplo de datediff y between

    Aquí hay un ejemplo de cómo utilizar la función DATEDIFF y la cláusula BETWEEN en una consulta de SQL Server:

    SELECT *
    FROM Orders
    WHERE DATEDIFF(hour, OrderDate, GETDATE()) BETWEEN 24 AND 72
    

    Esta consulta selecciona todas las filas de la tabla «Orders» donde la diferencia en horas entre la fecha de orden (OrderDate) y la fecha y hora actual (GETDATE()) está entre 24 y 72 horas.

    Conclusion

    En resumen podemos ver que sql server es muy versatil a la hora de trabajar con horas y fechas ya que contamos con mas de una manera de hacer la suma y resta de valores tanto de fecha como de hora y minutos.