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 tarea que podemos realizar siempre que conoscas las funciones que te permiten hacerlo. En MySQLaparte de dar formato a las fechas tambien podemos jugar con los minutos y horas de una columna fecha.

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 y ADDTIME. El uso de esta funcion ya fue explicado al momento de dar formatos a tus columnas de fecha. En esa seccion explicamos como usarla pero para los valores de tiempo.

    Para sumar una cantidad de horas a un valor de tiempo existente, puedes usar la función ADDTIME.

    Por ejemplo, para sumar 2 horas a un valor de tiempo llamado my_time, puedes usar la siguiente consulta:

    SELECT ADDTIME(my_time, '02:00:00') AS new_time FROM my_table;

    En esta consulta, 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.

    Para restar una cantidad de horas de un valor de tiempo existente, simplemente puede pasar un número negativo como el segundo parámetro a la función ADDTIME.

    Por ejemplo, para restar 1 hora de un valor de tiempo llamado my_time, puedes usar la siguiente consulta:

    SELECT ADDTIME(my_time, '-01:00:00') AS new_time FROM my_table;
    

    En esta consulta, la función ADDTIME resta 1 hora del valor de tiempo my_time, y la nueva hora resultante se devuelve con el alias new_time.

    También puedes usar la función TIME_FORMAT para formatear el resultado de la suma o resta de horas. Por ejemplo,

    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;

    En esta consulta, 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.

    Como sumar o restar horas a una fecha UTC ?

    Para sumar o restar horas a una fecha UTC en MySQL, puedes usar la función CONVERT_TZ para convertir la fecha UTC a una zona horaria específica, sumar o restar las horas, y luego convertir la fecha resultante de vuelta a UTC.

    Por ejemplo, para sumar 2 horas a una fecha UTC en un campo llamado my_utc_datetime, puedes usar la siguiente consulta:

    SELECT 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;

    En esta consulta, 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.

    Para restar una cantidad de horas de una fecha UTC, simplemente puedes pasar un número negativo como el segundo parámetro a la función ADDTIME. Por ejemplo, para restar 1 hora de una fecha UTC en un campo my_utc_datetime, puedes usar la siguiente consulta:

    SELECT CONVERT_TZ(
        ADDTIME(CONVERT_TZ(my_utc_datetime, '+00:00', '+02:00'), '-01:00:00'),
        '+02:00',
        '+00:00'
    ) AS new_utc_datetime FROM my_table;

    En esta consulta, la función CONVERT_TZ convierte la fecha UTC en el campo my_utc_datetime a la zona horaria +02:00, luego se le resta 1 hora 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.

    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.

    Sumar una hora a un campo de tipo TIME

    Para sumar o restar una cantidad de tiempo a un campo de tipo TIME, DATETIME, o TIMESTAMP en MySQL, puedes utilizar la función DATE_ADD o DATE_SUB, y especificar el intervalo de tiempo que deseas agregar o restar.

    Por ejemplo, para sumar una hora a un campo de tipo TIME llamado my_time, puedes usar la siguiente consulta:

    SELECT 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.

    De manera similar, para restar una cantidad de tiempo de un campo de tipo DATETIME o TIMESTAMP, simplemente puedes utilizar la función DATE_SUB en lugar de DATE_ADD. 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.

    En resumen

    En resumen , en este articulo pudimos apreciar 4 formas 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!!