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

Holen Sie sich den ersten, zweiten, dritten oder vierten Montag eines Monats in SQLite

Wir können SQLites DATE() verwenden Funktion, um Berechnungen an einem bestimmten Datum durchzuführen. Wir können unter anderem die erste, zweite, dritte oder vierte Instanz eines bestimmten Tages innerhalb eines bestimmten Monats zurückgeben.

Beispiel

Hier ist ein Beispiel zur Veranschaulichung:

SELECT 
    DATE('2025-10-20', 'start of month', 'weekday 1') AS "First",
    DATE('2025-10-20', 'start of month', '+7 days', 'weekday 1') AS "Second",
    DATE('2025-10-20', 'start of month', '+14 days', 'weekday 1') AS "Third",
    DATE('2025-10-20', 'start of month', '+21 days', 'weekday 1') AS "Fourth",
    DATE('2025-10-20', 'start of month', '+28 days', 'weekday 1') AS "Fifth";

Ergebnis:

First       Second      Third       Fourth      Fifth     
----------  ----------  ----------  ----------  ----------
2025-10-06  2025-10-13  2025-10-20  2025-10-27  2025-11-03

In diesem Beispiel ist das Startdatum für alle Instanzen gleich, ebenso wie die meisten Argumente. Das einzige, was sich ändert, ist, wie viel wir zum Monatsanfang hinzufügen. Wenn wir nichts hinzufügen, können wir den ersten Montag zurückgeben, 7 Tage hinzufügen, den zweiten Montag zurückgeben und so weiter.

Hier verwenden wir start of month um das Datum auf den ersten Tag des Monats zurückzusetzen. Wir verwenden dann weitere Modifikatoren, um dieses Datum entsprechend zu ändern.

Der weekday 1 Modifikator verschiebt das Datum auf den nächsten Montag (Sonntag ist 0, Montag ist 1, Dienstag ist 2 und so weiter).

Um den zweiten Montag zu erhalten, können wir +7 days verwenden um das Datum um eine Woche vorzustellen. Für die folgenden Montagen addieren wir 7 Tage zu dieser Zahl hinzu (+14 days , +21 days , +28 days usw.).

Wir können auch sehen, dass das Hinzufügen von 28 Tagen den ersten Montag des folgenden Monats zurückgibt.