We kunnen SQLite's DATE()
. gebruiken functie om berekeningen op een bepaalde datum uit te voeren. Een van de dingen die we kunnen doen is de eerste, tweede, derde of vierde instantie van een bepaalde dag binnen een bepaalde maand retourneren.
Voorbeeld
Hier is een voorbeeld om te demonstreren:
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";
Resultaat:
First Second Third Fourth Fifth ---------- ---------- ---------- ---------- ---------- 2025-10-06 2025-10-13 2025-10-20 2025-10-27 2025-11-03
In dit voorbeeld is de begindatum voor alle instanties hetzelfde, evenals voor de meeste argumenten. Het enige dat verandert, is hoeveel we aan het begin van de maand toevoegen. Als we niets toevoegen, kunnen we de eerste maandag retourneren, 7 dagen retourneren op de tweede maandag, enzovoort.
Hier gebruiken we start of month
om de datum terug te zetten naar de eerste dag van de maand. We gebruiken dan meer modifiers om die datum dienovereenkomstig aan te passen.
De weekday 1
modifier verplaatst de datum vooruit naar de volgende maandag (zondag is 0, maandag is 1, dinsdag is 2, enzovoort).
Om de tweede maandag te krijgen kunnen we +7 days
. gebruiken om de datum een week vooruit te zetten. Voor volgende maandagen tellen we 7 dagen bij dat aantal op (+14 days
, +21 days
, +28 days
enz.).
We kunnen ook zien dat het toevoegen van 28 dagen de eerste maandag van de volgende maand terugkomt.