Problem:
Sie möchten einem bestimmten Datum in einer SQLite-Datenbank einen Monat hinzufügen.
Beispiel:
Unsere Datenbank hat eine Tabelle namens production
mit Daten in den Spalten id
, product
und start_date
.
id | Produkt | Startdatum |
---|---|---|
1 | Schreibtisch | 2019-08-17 |
2 | Sessel | 2019-07-17 |
3 | Sofa | 2019-10-31 |
Produkte haben ein neues Produktionsstartdatum, das einen Monat nach dem oben aufgeführten liegt. Lassen Sie uns die Namen der Produkte und ihr neues Startdatum abrufen.
Hier ist die Abfrage, die Sie schreiben würden:
Lösung:
SELECT product, DATE(start_date,'+1 months') AS new_start_date FROM production;
Hier ist das Ergebnis der Abfrage:
id | Produkt | new_start_date |
---|---|---|
1 | Schreibtisch | 2019-09-17 |
2 | Sessel | 2019-08-17 |
3 | Sofa | 2019-12-01 |
Diskussion:
Verwenden Sie das SQLite DATE()
Funktion zum Addieren eines Monats zu einem bestimmten Datum (oder Datum und Uhrzeit). Die erforderlichen Argumente umfassen das zu ändernde Datum/Datum/Uhrzeit und einen oder mehrere Modifikatoren mit Werten, die angeben, wie viele Einheiten addiert oder subtrahiert werden.
Das erste Argument kann ein Ausdruck sein, der einen date/datetime-Wert oder eine date/datetime-Spalte zurückgibt. In unserem Beispiel ist es die Spalte start_date
.
Die Modifikatoren geben an, welche (und wie viel) Zeiteinheit addiert/subtrahiert werden soll. In unserem Beispiel verwenden wir den Modifikator „+1 Monate ’. Der Modifikator beginnt entweder mit Plus oder Minus, was Addition oder Subtraktion anzeigt. Dann kommt noch ein Wert (z.B. 1) und die Einheit (z.B. Monate , Jahre , Tage , etc.) Wenn Sie „-2 Tage schreiben “, ziehen Sie 2 Tage von einem bestimmten Datum ab.
Wichtig: Einige Modifikatoren erfordern eine etwas andere Syntax als oben gezeigt. Beispiel:„Wochentag ’ Modifikator steht vor dem Wert (d. h. DATE(start_date,'weekday 3')
). Andere Modifikatoren nehmen keine Werte an, wie „Monatsbeginn ’, die den ersten Tag des Monats für ein bestimmtes Datum anzeigt (z. B. DATE(start_date,' start of month')
). Genaue Informationen zu Datums- und Zeitmodifikatoren finden Sie in der SQLite-Dokumentation.
Wir haben die neue Spalte, die das aktualisierte Startdatum enthält, new_start_date
genannt . Das neue Produktionsstartdatum für den Schreibtisch ist 2019-09-17
, einen Monat nach dem ursprünglichen Datum 2019-08-17
. Beachten Sie das für 2019-10-31
, das neue Datum ist 2019-12-01
; Das liegt daran, dass der November 30 Tage hat, nicht 31.