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

Gibt das Monatsende in SQLite zurück

In SQLite können wir die folgende Methode verwenden, um den letzten Tag eines bestimmten Monats zu berechnen.

Wir können dies entweder auf das aktuelle Datum oder auf ein anderes spezifisches Datum stützen.

Letzter Tag des aktuellen Monats

Hier ist ein Beispiel, das den letzten Tag des aktuellen Monats zurückgibt:

SELECT DATE('now', 'start of month', '+1 month', '-1 day');

Ergebnis:

2022-03-31

Dies verwendet das DATE() Funktion, um die gewünschten Ergebnisse zurückzugeben. Der 'now' Das Argument gibt das aktuelle Datum und den 'start of month' zurück Argument ändert es auf den Anfang des Monats. Wir verwenden dann '+1 month' um einen Monat zum Anfang des Monats hinzuzufügen (was ihn auf den Anfang des folgenden Monats verschieben würde), dann reduzieren wir dieses Datum um einen Tag (um es wieder auf das Ende des ersten Monats zu bringen).

Letzter Tag eines bestimmten Monats

Aber wie bereits erwähnt, sind wir nicht nur auf das Ende des laufenden Monats beschränkt. Wir können ein beliebiges Datum angeben und es wird basierend auf diesem Datum das Ende des Monats zurückgegeben.

Hier sind einige Beispiele:

SELECT 
    DATE('2023-02-10', 'start of month', '+1 month', '-1 day') AS Feb,
    DATE('2023-11-10', 'start of month', '+1 month', '-1 day') AS Nov,
    DATE('2023-12-10', 'start of month', '+1 month', '-1 day') AS Dec;

Ergebnis:

Feb         Nov         Dec       
----------  ----------  ----------
2023-02-28  2023-11-30  2023-12-31

Wir können sehen, dass SQLite intelligent genug ist, um herauszufinden, wie viele Tage in jedem Monat sind. Wenn wir '+1 month' verwenden , weiß SQLite, wie viele Tage jeder Monat hat. Wir können sehen, dass der Februar 28 Tage hat, der 30. November und der Dezember 31.

Wenn wir das ursprüngliche Datum auf 2024 nach vorne verschieben, können wir sehen, dass der Februar in diesem Jahr 29 Tage hat:

SELECT 
    DATE('2024-02-10', 'start of month', '+1 month', '-1 day') AS Feb,
    DATE('2024-11-10', 'start of month', '+1 month', '-1 day') AS Nov,
    DATE('2024-12-10', 'start of month', '+1 month', '-1 day') AS Dec;

Ergebnis:

Feb         Nov         Dec       
----------  ----------  ----------
2024-02-29  2024-11-30  2024-12-31