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