Vi kan använda SQLites DATE()
funktion för att returnera den första måndagen i varje månad för ett givet år, baserat på det datum vi anger.
Men det är inte begränsat till måndag. Vi kan också få den första tisdagen, onsdagen, torsdagen, fredagen osv i varje månad.
Exempel
Vi kan alternativt använda kod som följande för att returnera den första måndagen i varje månad under hela året:
SELECT DATE('2025-10-20', 'start of year', 'weekday 1') AS "Jan", DATE('2025-10-20', 'start of year', ' +1 månad', 'veckodag 1') AS "Feb", DATE('2025-10-20', 'start of year', '+2 months', 'weekday 1') AS "Mar", DATE(' 2025-10-20', 'start of year', '+3 months', 'weekday 1') AS "apr", DATE('2025-10-20', 'start of year', '+4 months' , 'veckodag 1') AS "maj", DATE('2025-10-20', 'start of year', '+5 months', 'weekday 1') AS "jun", DATE('2025-10- 20', 'start of year', '+6 months', 'weekday 1') AS "jul", DATE('2025-10-20', 'start of year', '+7 months', 'weekday 1 ') AS "Aug", DATE('2025-10-20', 'start of year', '+8 months', 'weekday 1') AS "Sep", DATE('2025-10-20', ' början av året', '+9 månader', 'veckodag 1') AS "okt", DATUM('2025-10-20', 'start på året', '+10 månader', 'veckodag 1') AS " Nov", DATE('2025-10-20', 'start of year', '+11 months', 'weekday 1') AS "Dec";
Resultat:
Jan Feb Mar Apr Maj Jun Jul Aug Sep Okt Nov Dec ---------- ---------- ---------- ----- ----- ---------- ---------- ---------- ---------- ----- ----- ---------- ---------- ----------2025-01-06 2025-02-03 2025-03-03 2025-04-07 2025-05-05 2025-06-02 2025-07-07 2025-08-04 2025-09-01 2025-10-06 2025-11-03 2025-12-12Här kallar vi
DATE()
fungera tolv gånger. Vi använder samma datum varje gång, och de flesta argumenten är desamma. Det enda som förändras är hur mycket vi lägger till i början av året.Vi använder
start av året
för att återställa datumet till årets första dag. Vi använder sedan ytterligare modifierare för att ändra detta datum i enlighet med detta.När vi inte lägger till några månader till datumet återkommer vi den första måndagen i januari. Lägger till
+1 månad
returnerar den första måndagen i februari och så vidare.
veckodag 1
modifierare flyttar fram datumet till nästa måndag. Söndag är 0, måndag är 1, tisdag är 2 och så vidare, så om vi till exempel ville ha tisdag skulle vi användaveckodag 2
istället.Använda det aktuella datumet
Följande exempel använder det aktuella datumet:
SELECT DATE('now') AS "Now", DATE('now', 'start of year', 'weekday 1') AS "Jan", DATE('now', 'start of year' ', '+1 månad', 'veckodag 1') AS "feb", DATE('nu', 'start på året', '+2 månader', 'veckodag 1') AS "mar", DATE('nu ', 'början på året', '+3 månader', 'veckodag 1') AS "apr", DATE('nu', 'start på året', '+4 månader', 'veckodag 1') AS "maj ", DATE('now', 'start of year', '+5 months', 'weekday 1') AS "jun", DATE('now', 'start of year', '+6 months', 'weekday 1') AS "Jul", DATE('now', 'start of year', '+7 months', 'weekday 1') AS "Aug", DATE('now', 'start of year', '+ 8 månader', 'veckodag 1') AS "sep", DATE('nu', 'start på året', '+9 månader', 'veckodag 1') AS "okt", DATE('nu', 'start år', '+10 månader', 'veckodag 1') AS "nov", DATE('nu', 'start på året', '+11 månader', 'veckodag 1') AS "dec";
Resultat:
Nu jan feb mar apr maj jun jul aug sep okt nov dec ---------- ---------- ---------- ---- ------ ---------- ---------- ---------- ---------- ---- ------ ---------- ---------- ---------- ----------2022-03- 10 2022-01-03 2022-02-07 2022-03-07 2022-04-04 2022-05-02 2022-06-06 2022-07-04 2022-08-01 20201-20201-2 03 2022-11-07 2022-12-05