sql >> Databasteknik >  >> RDS >> SQLite

Få den första, andra, tredje eller fjärde måndagen i en månad i SQLite

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.


  1. Problem med SQLiteOpenHelper på Android 2.X och 3.X

  2. Android - Bättre tillvägagångssätt för att ladda SD-KORT-bilder

  3. VISA DATABASER Motsvarar SQL Server – sp_databases

  4. Implementering av failover i MS SQL Server 2017 Standard