SQLite
 sql >> Datenbank >  >> RDS >> SQLite

So fügen Sie einem Datum in SQLite einen Monat hinzu

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.


No