sql >> Base de Datos >  >> RDS >> MariaDB

Cómo restar horas de un valor de fecha y hora en MariaDB

Aquí hay algunas opciones para restar una o más horas de un valor de fecha y hora en MariaDB.

El SUBTIME() Función

El SUBTIME() resta una cantidad determinada de tiempo de un valor de hora o fechahora.

Ejemplo:

SELECT SUBTIME('2021-05-01 10:00:00', '01:00:00');

Resultado:

+--------------------------------------------+
| SUBTIME('2021-05-01 10:00:00', '01:00:00') |
+--------------------------------------------+
| 2021-05-01 09:00:00                        |
+--------------------------------------------+

También puede cambiar las otras unidades de tiempo, como minutos, segundos, etc.

El DATE_SUB() Función

El DATE_SUB() La función le permite restar un cierto número de unidades de fecha/hora de una expresión de fecha o fecha y hora. Por lo tanto, podemos usar esta función para devolver el valor de fecha y hora, menos un cierto número de horas.

Ejemplo:

SELECT DATE_SUB('2021-05-01 10:00:00', INTERVAL 1 HOUR);

Resultado:

+--------------------------------------------------+
| DATE_SUB('2021-05-01 10:00:00', INTERVAL 1 HOUR) |
+--------------------------------------------------+
| 2021-05-01 09:00:00                              |
+--------------------------------------------------+

También puede utilizar unidades de fecha y hora compuestas. Por ejemplo, podría hacer horas y minutos de una sola vez.

Ejemplo:

SELECT DATE_SUB('2021-05-01 10:00:00', INTERVAL '15:30' HOUR_MINUTE);

Resultado:

+---------------------------------------------------------------+
| DATE_SUB('2021-05-01 10:00:00', INTERVAL '15:30' HOUR_MINUTE) |
+---------------------------------------------------------------+
| 2021-04-30 18:30:00                                           |
+---------------------------------------------------------------+

Pasar solo la fecha

Esto es lo que sucede si proporcionamos solo un valor de fecha:

SELECT DATE_SUB('2021-05-01', INTERVAL 1 HOUR);

Resultado:

+-----------------------------------------+
| DATE_SUB('2021-05-01', INTERVAL 1 HOUR) |
+-----------------------------------------+
| 2021-04-30 23:00:00                     |
+-----------------------------------------+

Asume que el tiempo comienza a las 00:00:00, por lo que HOUR la cantidad se resta de eso.

Múltiples Horas

Si necesita restar más de una hora, simplemente use ese número en lugar de 1 . Sin embargo, la HOUR la palabra clave permanece sin plural independientemente de:

SELECT DATE_SUB('2021-05-01 10:00:00', INTERVAL 2 HOUR);

Resultado:

+--------------------------------------------------+
| DATE_SUB('2021-05-01 10:00:00', INTERVAL 2 HOUR) |
+--------------------------------------------------+
| 2021-05-01 08:00:00                              |
+--------------------------------------------------+

El operador de resta (- )

Otra forma de restar horas de una expresión de fecha y hora es usar el operador de resta (- ), también conocido como el operador menos.

Ejemplo:

SELECT '2021-05-01 10:00:00' - INTERVAL 48 HOUR;

Resultado:

+------------------------------------------+
| '2021-05-01 10:00:00' - INTERVAL 48 HOUR |
+------------------------------------------+
| 2021-04-29 10:00:00                      |
+------------------------------------------+

El Operador de Suma (+ )

Alternativamente, puede usar el operador de suma (+ ) junto con una cantidad negativa.

Ejemplo:

SELECT '2021-05-01 10:00:00' + INTERVAL -48 HOUR;

Resultado:

+-------------------------------------------+
| '2021-05-01 10:00:00' + INTERVAL -48 HOUR |
+-------------------------------------------+
| 2021-04-29 10:00:00                       |
+-------------------------------------------+

Otras formas de restar horas

Aquí hay algunos otros enfoques que podría usar para restar una o más horas de un valor de fecha y hora:

  • El ADDTIME() (proporcionar una cantidad negativa restará esa cantidad del valor de fecha y hora).
  • El SUBDATE() función (este es un sinónimo de DATE_SUB() cuando se usa con la misma sintaxis).
  • El DATE_ADD() (proporcionar una cantidad negativa restará esa cantidad del valor de fecha y hora).
  • El ADDDATE() (proporcionar una cantidad negativa restará esa cantidad del valor de fecha y hora).