Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como adicionar tempo a um valor de data e hora no MySQL

Problema:


Você gostaria de adicionar um determinado período de tempo a um valor de data e hora em um banco de dados MySQL.

Exemplo:


Nosso banco de dados tem uma tabela chamada flight_schedule com dados nas colunas flight , aircraft e arrival_datetime .
voo aeronaves arrival_datetime
EK10 L1201 2019-04-20 15:15:00
AY12 K2001 2019-03-31 20:10:00
LA105 F205 2019-08-03 11:15:00
LH30 K256 2019-07-01 12:47:00

Para cada voo, vamos obter o código do voo, o código da aeronave e uma nova data e hora de chegada. Para calcular o new_arrival_datetime , adicionaremos 2 horas e 10 minutos ao horário atual para cada chegada – é o quanto esses voos estão atrasados.

Solução:


Usaremos o ADDTIME() função. Aqui está a consulta que você escreveria:
SELECT flight,
       aircraft,
       ADDTIME(arrival_datetime, ‘2:10’) 
         AS new_arrival_datetime
FROM flight_schedule;

Segue o resultado da consulta:
voo aeronaves new_arrival_datetime
EK10 L1201 2019-04-20 17:25:00
AY12 K2001 2019-03-31 22:20:00
LA105 F205 2019-08-03 13:25:00
LH30 K256 2019-07-01 14:57:00

Discussão:


Use a função ADDTIME() se desejar selecionar um novo datetime adicionando um determinado horário a um valor datetime/timestamp/time.

Esta função recebe dois argumentos. O primeiro argumento é o datetime/time ao qual estamos adicionando o tempo; esta pode ser uma expressão que retorna um valor de hora/datahora/carimbo de hora ou o nome de uma coluna de hora/datahora/hora. Em nosso exemplo, usamos o arrival_datetime coluna, que é de datetime tipo de dados.

O segundo argumento é uma string contendo a quantidade de tempo a ser adicionada ao primeiro argumento (no nosso exemplo, ‘2:10’, ou 2 horas e 10 minutos).

Você também pode adicionar segundos fracionários e até dias a um valor de data/hora. A consulta abaixo adiciona 3 dias, 1 hora, 1 minuto, 1 segundo e 111 segundos fracionários a uma data e hora:
SELECT ADDTIME('2019-02-05 10:12:11', '3 1:1:1.111'); 

Ele retorna:
2019-02-08 11:13:12.111000

ADDTIME() retorna uma string com a nova hora. Em nosso exemplo, o novo horário de chegada do voo 'EK10' é '2019-04-20 17:25:00' - duas horas e dez minutos após a data e hora original de
‘2019-04-20 15:15:00’.