Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie man Zeit zu einem Datetime-Wert in MySQL hinzufügt

Problem:

Sie möchten einem datetime-Wert in einer MySQL-Datenbank eine bestimmte Zeitspanne hinzufügen.

Beispiel:

Unsere Datenbank hat eine Tabelle namens flight_schedule mit Daten in den Spalten flight , aircraft und arrival_datetime .

Flug Flugzeug 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

Lassen Sie uns für jeden Flug den Flugcode, den Flugzeugcode und ein neues Ankunftsdatum und eine neue Ankunftszeit abrufen. Um die new_arrival_datetime zu berechnen , addieren wir für jede Ankunft 2 Stunden und 10 Minuten zur aktuellen Zeit hinzu – so viel Verspätung haben diese Flüge.

Lösung:

Wir verwenden ADDTIME() Funktion. Hier ist die Abfrage, die Sie schreiben würden:

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

Hier ist das Ergebnis der Abfrage:

Flug Flugzeug 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

Diskussion:

Verwenden Sie die ADDTIME()-Funktion, wenn Sie eine neue Datumszeit auswählen möchten, indem Sie eine bestimmte Zeit zu einem Datumzeit-/Zeitstempel-/Zeitwert hinzufügen.

Diese Funktion benötigt zwei Argumente. Das erste Argument ist die Datumszeit/Uhrzeit, zu der wir Zeit hinzufügen; Dies kann ein Ausdruck sein, der einen Zeit-/Datumszeit-/Zeitstempelwert oder den Namen einer Zeit-/Datumszeit-/Zeitstempelspalte zurückgibt. In unserem Beispiel verwenden wir den arrival_datetime Spalte, die datetime ist Datentyp.

Das zweite Argument ist eine Zeichenfolge, die die Zeitdauer enthält, die zum ersten Argument hinzugefügt werden soll (in unserem Beispiel „2:10“ oder 2 Stunden und 10 Minuten).

Sie können einem datetime/time-Wert auch Sekundenbruchteile und sogar Tage hinzufügen. Die folgende Abfrage fügt 3 Tage, 1 Stunde, 1 Minute, 1 Sekunde und 111 Sekundenbruchteile zu einem Datum und einer Uhrzeit hinzu:

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

Es gibt zurück:

2019-02-08 11:13:12.111000

ADDTIME() gibt einen String mit der neuen Zeit zurück. In unserem Beispiel die neue Ankunftszeit für Flug „EK10“ ist „2019-04-20 17:25:00“ – zwei Stunden und zehn Minuten nach seiner ursprünglichen Datumszeit von

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