Vi kan använda SQLites DATE()
funktion för att returnera datumet för den första instansen av en viss dag under ett givet år. Därför kan vi använda den för att återvända den första måndagen ett givet år. Vi kan också använda den för att returnera den första tisdagen, onsdagen, torsdagen, fredagen osv.
Vi kan använda DATETIME()
om vi vill att ett datetime-värde ska returneras.
Exempel
SELECT DATE('2025-10-20', 'start of year', 'weekday 1');
Resultat:
2025-01-06
I det här fallet inträffar den första måndagen i det angivna året 2025-01-06.
start of year
och weekday 1
modifierare ändrar datumet som anges vid det första argumentet. Söndag är 0, måndag är 1, tisdag är 2, och så vidare. Därför använder vi värdet weekday 1
för att välja måndag.
Första måndagen i innevarande år
Här är ett exempel som går igenom processen med det aktuella datumet:
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
Det här exemplet visar oss datumet i varje steg av dess ändring. Vi använder now
för att returnera det aktuella datumet, sedan start of year
för att flytta tillbaka den till början av året, sedan weekday 1
för att flytta fram datumet till första måndagen.
DATETIME()
Funktion
Vi kan också använda DATETIME()
funktion för att göra samma sak. Skillnaden är att den inkluderar tidsdelen:
SELECT DATETIME('2025-10-20', 'start of year', 'weekday 1');
Resultat:
2025-01-06 00:00:00