Saltar al contenido

Sumar y restar horas en Mysql

Como sumar y restar horas, minutos o segundos de un campo tipo fecha de MySQL? una vez conoces las funciones que te permiten manipular esta informacion. En este articulo podrias aprender como sumar minutos a una columna o como restar horas a una fecha desde mysql.

Por lo cual te recomiendo ver este articulo hasta el final!!

Índice

    Como sumar y restar horas en mysql ?

    Para sumar o restar horas en MySQL, puedes utilizar las funciones TIME_FORMAT , ADDTIME y CONVERT_TZ son el conjunto de funciones que vamos a explorar en este articulo con diferentes ejemplos que de como funciona cada una.

    Ejemplos practicos de como sumar y restar horas en mysql

    EjemploConsulta Resultado
    Por ejemplo, para sumar 2 horas a un valor de tiempo llamado my_time, puedes usar la siguienteSELECT ADDTIME(my_time, ’02:00:00′) AS new_time FROM my_table; la función ADDTIME agrega 2 horas al valor de tiempo my_time, y la nueva hora resultante se devuelve con el alias new_time.
    restar 1 hora de un valor de tiempo llamado my_time, puedes usar la siguiente consultaSELECT ADDTIME(my_time, ‘-01:00:00’) AS new_time FROM my_table;Resta 1 hora del valor de tiempo my_time, y la nueva hora resultante se devuelve con el alias new_time.
    si deseas que el resultado se muestre en formato HH:MM:SS, puedes usar la siguiente consulta:SELECT TIME_FORMAT(ADDTIME(my_time, ’02:00:00′), ‘%H:%i:%s’) AS new_time FROM my_table;la función TIME_FORMAT formatea la nueva hora resultante en formato HH:MM:SS, y el resultado se devuelve con el alias new_time.
    Ejemplo, para sumar 2 horas a una fecha UTC en un campo llamado my_utc_datetimeSELECT CONVERT_TZ(
    ADDTIME(CONVERT_TZ(my_utc_datetime, ‘+00:00’, ‘+02:00′), ’02:00:00’),
    ‘+02:00’,
    ‘+00:00’
    ) AS new_utc_datetime FROM my_table;
    la función CONVERT_TZ convierte la fecha UTC en el campo my_utc_datetime a la zona horaria +02:00, luego se le agrega 2 horas utilizando la función ADDTIME, y se convierte la fecha resultante de vuelta a UTC utilizando nuevamente la función CONVERT_TZ. El resultado se devuelve con el alias new_utc_datetime.
    Por ejemplo, para sumar una hora a un campo de tipo TIME llamado my_time, puedes usar la siguiente consultaSELECT TIME(DATE_ADD(my_time, INTERVAL 1 HOUR)) AS new_time FROM my_table;En esta consulta, la función DATE_ADD agrega 1 hora al campo my_time, y la función TIME se utiliza para extraer solo el valor de tiempo resultante de la suma. El resultado se devuelve con el alias new_time.
    Por ejemplo, para restar 30 minutos a un campo de tipo DATETIME llamado my_datetime, puedes usar la siguiente consulta:SELECT DATE_SUB(my_datetime, INTERVAL 30 MINUTE) AS new_datetime FROM my_table;En esta consulta, la función DATE_SUB resta 30 minutos del campo my_datetime, y la nueva fecha y hora resultante se devuelve con el alias new_datetime.

    Calcular la diferencia de horas entre dos columnas ?

    La función DATEDIFF en MySQL se utiliza para calcular la diferencia entre dos fechas y devuelve el número de días transcurridos entre ambas fechas. Sin embargo, DATEDIFF no tiene en cuenta la hora, solo la fecha.

    Si deseas calcular la diferencia en horas entre dos fechas, puedes utilizar la función TIMESTAMPDIFF. Por ejemplo, para calcular la diferencia en horas entre dos campos de tipo DATETIME llamados start_datetime y end_datetime, puedes usar la siguiente consulta:

    SELECT TIMESTAMPDIFF(HOUR, start_datetime, end_datetime) AS hours_diff FROM my_table;

    En esta consulta, la función TIMESTAMPDIFF calcula la diferencia en horas entre start_datetime y end_datetime y devuelve el resultado con el alias hours_diff.

    Si deseas calcular la diferencia en horas entre dos campos de tipo TIME, puedes utilizar la función TIME_TO_SEC para convertir los valores de tiempo en segundos, calcular la diferencia en segundos utilizando la función TIMESTAMPDIFF, y luego convertir el resultado nuevamente a horas utilizando la función SEC_TO_TIME. Por ejemplo, para calcular la diferencia en horas entre dos campos de tipo TIME llamados start_time y end_time, puedes usar la siguiente consulta:

    SELECT SEC_TO_TIME(TIMESTAMPDIFF(SECOND, start_time, end_time)) AS hours_diff
     FROM my_table;

    En esta consulta, la función SEC_TO_TIME convierte el resultado de TIMESTAMPDIFF en segundos de vuelta a un valor de tiempo, y devuelve el resultado en horas con el alias hours_diff.

    En resumen

    Este articulo pudimos apreciar los ejemplos de sumar o restar horas y minutos de una columna o un variable de tipo fecha o TIME en MySQL. Cual seria la mejor opcion dependera de la situacion que tenga. Al igual que nos pasa con lo formatos de monedas en mysql siempre tendremos mas de una forma de hacer esto.

    Comenta como sumas o restas horas, minutos o segundos en MySQL?

    Gracias, hasta la proxima :D!!

    Enlaces interesantes