sql >> Databasteknik >  >> RDS >> SQLite

Returnera den första måndagen i varje månad i SQLite

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-12 

Hä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ända veckodag 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

  1. Problem vid hämtning av poster med tom array

  2. Använda Jenkins med Kubernetes AWS, del 1

  3. Android med rum - Hur man ställer in en främmande nyckel på null

  4. SQL-fråga för att skapa tabell i MySQL