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

Gibt den ersten Montag jedes Monats in SQLite zurück

Wir können SQLites DATE() verwenden Funktion, um den ersten Montag jedes Monats für ein bestimmtes Jahr basierend auf dem von uns bereitgestellten Datum zurückzugeben.

Aber es ist nicht auf Montag beschränkt. Wir können auch den ersten Dienstag, Mittwoch, Donnerstag, Freitag usw. eines jeden Monats erhalten.

Beispiel

Wir können alternativ Code wie den folgenden verwenden, um das ganze Jahr über den ersten Montag jedes Monats zurückzugeben:

SELECT 
    DATE('2025-10-20', 'start of year', 'weekday 1') AS "Jan",
    DATE('2025-10-20', 'start of year', '+1 month', 'weekday 1') AS "Feb",
    DATE('2025-10-20', 'start of year', '+2 months', 'weekday 1') AS "Mar",
    DATE('2025-10-20', 'start of year', '+3 months', 'weekday 1') AS "Apr",
    DATE('2025-10-20', 'start of year', '+4 months', 'weekday 1') AS "May",
    DATE('2025-10-20', 'start of year', '+5 months', 'weekday 1') AS "Jun",
    DATE('2025-10-20', 'start of year', '+6 months', 'weekday 1') AS "Jul",
    DATE('2025-10-20', 'start of year', '+7 months', 'weekday 1') AS "Aug",
    DATE('2025-10-20', 'start of year', '+8 months', 'weekday 1') AS "Sep",
    DATE('2025-10-20', 'start of year', '+9 months', 'weekday 1') AS "Oct",
    DATE('2025-10-20', 'start of year', '+10 months', 'weekday 1') AS "Nov",
    DATE('2025-10-20', 'start of year', '+11 months', 'weekday 1') AS "Dec";

Ergebnis:

Jan         Feb         Mar         Apr         May         Jun         Jul         Aug         Sep         Oct         Nov         Dec       
----------  ----------  ----------  ----------  ----------  ----------  ----------  ----------  ----------  ----------  ----------  ----------
2025-01-06  2025-02-03  2025-03-03  2025-04-07  2025-05-05  2025-06-02  2025-07-07  2025-08-04  2025-09-01  2025-10-06  2025-11-03  2025-12-01

Hier nennen wir das DATE() Funktion zwölfmal. Wir verwenden jedes Mal das gleiche Datum, und die meisten Argumente sind gleich. Das einzige, was sich ändert, ist, wie viel wir zum Jahresbeginn hinzufügen.

Wir verwenden start of year um das Datum auf den ersten Tag des Jahres zurückzusetzen. Wir verwenden dann zusätzliche Modifikatoren, um dieses Datum entsprechend zu ändern.

Wenn wir dem Datum keine Monate hinzufügen, geben wir den ersten Montag im Januar zurück. Hinzufügen von +1 month gibt den ersten Montag im Februar zurück usw.

Der weekday 1 Modifikator verschiebt das Datum auf den nächsten Montag. Sonntag ist 0, Montag ist 1, Dienstag ist 2 und so weiter. Wenn wir also beispielsweise Dienstag wollten, würden wir weekday 2 verwenden stattdessen.

Mit dem aktuellen Datum

Das folgende Beispiel verwendet das aktuelle Datum:

SELECT 
    DATE('now') AS "Now",
    DATE('now', 'start of year', 'weekday 1') AS "Jan",
    DATE('now', 'start of year', '+1 month', 'weekday 1') AS "Feb",
    DATE('now', 'start of year', '+2 months', 'weekday 1') AS "Mar",
    DATE('now', 'start of year', '+3 months', 'weekday 1') AS "Apr",
    DATE('now', 'start of year', '+4 months', 'weekday 1') AS "May",
    DATE('now', 'start of year', '+5 months', 'weekday 1') AS "Jun",
    DATE('now', 'start of year', '+6 months', 'weekday 1') AS "Jul",
    DATE('now', 'start of year', '+7 months', 'weekday 1') AS "Aug",
    DATE('now', 'start of year', '+8 months', 'weekday 1') AS "Sep",
    DATE('now', 'start of year', '+9 months', 'weekday 1') AS "Oct",
    DATE('now', 'start of year', '+10 months', 'weekday 1') AS "Nov",
    DATE('now', 'start of year', '+11 months', 'weekday 1') AS "Dec";

Ergebnis:

Now         Jan         Feb         Mar         Apr         May         Jun         Jul         Aug         Sep         Oct         Nov         Dec       
----------  ----------  ----------  ----------  ----------  ----------  ----------  ----------  ----------  ----------  ----------  ----------  ----------
2022-03-10  2022-01-03  2022-02-07  2022-03-07  2022-04-04  2022-05-02  2022-06-06  2022-07-04  2022-08-01  2022-09-05  2022-10-03  2022-11-07  2022-12-05