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