Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment ajouter de l'heure à une valeur Datetime dans MySQL

Problème :

Vous souhaitez ajouter une certaine durée à une valeur datetime dans une base de données MySQL.

Exemple :

Notre base de données a une table nommée flight_schedule avec des données dans les colonnes flight , aircraft , et arrival_datetime .

vol avion 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

Pour chaque vol, obtenons le code du vol, le code de l'avion et une nouvelle date et heure d'arrivée. Pour calculer le new_arrival_datetime , nous ajouterons 2 heures et 10 minutes à l'heure actuelle pour chaque arrivée - c'est le retard de ces vols.

Solution :

Nous utiliserons le ADDTIME() une fonction. Voici la requête que vous écririez :

SELECT flight,
       aircraft,
       ADDTIME(arrival_datetime, ‘2:10’) 
         AS new_arrival_datetime
FROM flight_schedule;

Voici le résultat de la requête :

vol avion 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

Discussion :

Utilisez la fonction ADDTIME() si vous souhaitez sélectionner une nouvelle date/heure en ajoutant une heure donnée à une valeur date/heure/horodatage/heure.

Cette fonction prend deux arguments. Le premier argument est la date/heure à laquelle nous ajoutons du temps ; il peut s'agir d'une expression qui renvoie une valeur heure/dateheure/horodatage ou le nom d'une colonne heure/dateheure/horodatage. Dans notre exemple, nous utilisons le arrival_datetime colonne, qui est de la datetime Type de données.

Le deuxième argument est une chaîne contenant la durée à ajouter au premier argument (dans notre exemple, "2:10", ou 2 heures et 10 minutes).

Vous pouvez également ajouter des fractions de seconde et même des jours à une valeur date/heure. La requête ci-dessous ajoute 3 jours, 1 heure, 1 minute, 1 seconde et 111 fractions de seconde à une date et une heure :

SELECT ADDTIME('2019-02-05 10:12:11', '3 1:1:1.111'); 

Il renvoie :

2019-02-08 11:13:12.111000

ADDTIME() renvoie une chaîne avec la nouvelle heure. Dans notre exemple, la nouvelle heure d'arrivée du vol ‘EK10’ est '2019-04-20 17:25:00' - deux heures et dix minutes après sa date et heure d'origine de

‘2019-04-20 15:15:00’.