Vi kan bruge SQLites DATE()
funktion til at udføre beregninger på en given dato. En af de ting, vi kan gøre, er at returnere den første, anden, tredje eller fjerde forekomst af en given dag inden for en given måned.
Eksempel
Her er et eksempel til demonstration:
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";
Resultat:
First Second Third Fourth Fifth ---------- ---------- ---------- ---------- ---------- 2025-10-06 2025-10-13 2025-10-20 2025-10-27 2025-11-03
I dette eksempel er startdatoen den samme for alle forekomster, såvel som de fleste af argumenterne. Det eneste, der ændrer sig, er, hvor meget vi tilføjer til starten af måneden. Hvis vi ikke tilføjer noget, kan vi returnere den første mandag, tilføje 7 dages returnering den anden mandag, og så videre.
Her bruger vi start of month
for at returnere datoen til den første dag i måneden. Vi bruger derefter flere modifikatorer til at ændre denne dato i overensstemmelse hermed.
weekday 1
modifier flytter datoen frem til næste mandag (søndag er 0, mandag er 1, tirsdag er 2, og så videre).
For at få den anden mandag kan vi bruge +7 days
at fremrykke datoen med en uge. For efterfølgende mandage tilføjer vi 7 dage til dette antal (+14 days
, +21 days
, +28 days
osv.).
Vi kan også se, at tilføjelse af 28 dage returnerer den første mandag i den følgende måned.