Vi kan bruge SQLites DATE()
funktion til at returnere datoen for den første forekomst af en given dag i et givet år. Derfor kan vi bruge det til at returnere den første mandag i et givet år. Vi kan også bruge den til at returnere den første tirsdag, onsdag, torsdag, fredag osv.
Vi kan bruge DATETIME()
hvis vi ønsker, at en datetime-værdi skal returneres.
Eksempel
SELECT DATE('2025-10-20', 'start of year', 'weekday 1');
Resultat:
2025-01-06
I dette tilfælde finder den første mandag i det givne år sted 2025-01-06.
start of year
og weekday 1
modifikatorer ændrer datoen givet ved det første argument. Søndag er 0, mandag er 1, tirsdag er 2, og så videre. Derfor bruger vi værdien weekday 1
for at vælge mandag.
Første mandag i det aktuelle år
Her er et eksempel, der gennemgår processen med den aktuelle dato:
SELECT
DATE('now') AS "Now",
DATE('now', 'start of year') AS "Start of Year",
DATE('now', 'start of year', 'weekday 1') AS "First Monday";
Resultat:
Now Start of Year First Monday ---------- ------------- ------------ 2022-03-09 2022-01-01 2022-01-03
Dette eksempel viser os datoen på hvert trin af dens ændring. Vi bruger now
for at returnere den aktuelle dato, derefter start of year
for at flytte det tilbage til starten af året, derefter weekday 1
for at flytte datoen frem til den første mandag.
DATETIME()
Funktion
Vi kan også bruge DATETIME()
funktion til at gøre det samme. Forskellen er, at den inkluderer tidsdelen:
SELECT DATETIME('2025-10-20', 'start of year', 'weekday 1');
Resultat:
2025-01-06 00:00:00