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

Hinzufügen von Monaten zu einem Datum in SQLite

In SQLite können wir das DATE() verwenden Funktion, um einem Datum einen oder mehrere Monate hinzuzufügen.

Wenn wir es mit Datetime-Werten zu tun haben, können wir DATETIME() verwenden Funktion.

Beispiel

Hier ist ein Beispiel, das das DATE() verwendet Funktion:

SELECT DATE('2050-08-21', '+1 month');

Ergebnis:

2050-09-21

Wenn wir den Betrag subtrahieren wollten, könnten wir + ersetzen mit - .

Auch das Weglassen des + Teil führt dazu, dass der Betrag hinzugefügt wird, als ob wir + verwendet hätten :

SELECT DATE('2050-08-21', '1 month');

Ergebnis:

2050-09-21

Wir können die Monate im Plural oder nicht im Plural angeben. Mit anderen Worten, month entspricht months :

SELECT 
    DATE('2050-08-21', '+3 month') AS month,
    DATE('2050-08-21', '+3 months') AS months;

Ergebnis:

month       months    
----------  ----------
2050-11-21  2050-11-21

Angegeben in Tagen

Wir können alternativ basierend auf einer Anzahl von Tagen einen Monat oder mehr zum Datum hinzufügen:

SELECT DATE('2050-08-21', '+31 days');

Ergebnis:

2050-09-21

Denken Sie jedoch daran, dass Sie dazu genau wissen müssen, wie viele Tage für die betreffenden Monate angemessen sind. Einige Monate haben 30 Tage, andere 31 und der Februar hat entweder 28 oder 29, je nachdem, ob es ein Schaltjahr ist oder nicht.

Mit dem month /months Modifizierer, normalisiert SQLite das Datum, basierend auf der Anzahl der Tage in dem/den relevanten Monat/en.

Hier ist ein Vergleich von Monaten und Tagen, wenn ein Datum im März hinzugefügt wird:

SELECT 
    DATE('2050-03-31', '+1 month') AS "1 month",
    DATE('2050-03-31', '+30 days') AS "30 days",
    DATE('2050-03-31', '+31 days') AS "31 days";

Ergebnis:

1 month     30 days     31 days   
----------  ----------  ----------
2050-05-01  2050-04-30  2050-05-01

Und hier ist der gleiche Vergleich, wenn man ein Datum im September hinzufügt:

SELECT 
    DATE('2050-09-30', '+1 month') AS "1 month",
    DATE('2050-09-30', '+30 days') AS "30 days",
    DATE('2050-09-30', '+31 days') AS "31 days";

Ergebnis:

1 month     30 days     31 days   
----------  ----------  ----------
2050-10-30  2050-10-30  2050-10-31

Der DATETIME() Funktion

Hier ist ein Beispiel, das die Verwendung von DATETIME() demonstriert Funktion zum Hinzufügen eines Monats zu einem datetime-Wert:

SELECT DATETIME('2050-08-21', '+1 month');

Ergebnis:

2050-09-21 00:00:00

In diesem Fall habe ich einen Datumswert übergeben, aber die Funktion hat einen Datumszeitwert zurückgegeben.

Hier ist ein weiteres Beispiel, diesmal mit einem datetime-Wert:

SELECT DATETIME('2050-08-21 18:30:45', '+1 month');

Ergebnis:

2050-09-21 18:30:45