Vi kan använda SQLites DATE()
funktion för att utföra beräkningar på ett givet datum. En av de saker vi kan göra är att returnera den första, andra, tredje eller fjärde instansen av en viss dag inom en given månad.
Exempel
Här är ett exempel att visa:
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 det här exemplet är startdatumet detsamma för alla instanser, såväl som för de flesta av argumenten. Det enda som förändras är hur mycket vi lägger till i början av månaden. Om vi inte lägger till något kan vi returnera den första måndagen, lägga till 7 dagars returer den andra måndagen och så vidare.
Här använder vi start of month
för att återställa datumet till den första dagen i månaden. Vi använder sedan fler modifierare för att ändra detta datum i enlighet med detta.
weekday 1
modifieraren flyttar fram datumet till nästa måndag (söndag är 0, måndag är 1, tisdag är 2, och så vidare).
För att få den andra måndagen kan vi använda +7 days
för att flytta fram datumet med en vecka. För efterföljande måndagar lägger vi till 7 dagar till det antalet (+14 days
, +21 days
, +28 days
etc).
Vi kan också se att lägga till 28 dagar returnerar den första måndagen i följande månad.