sql >> Databasteknik >  >> RDS >> SQLite

Få den första måndagen i en månad i SQLite

SQLites DATE() funktion ger oss möjligheten att returnera datumet för den första instansen av en viss dag i en given månad. Därför kan vi använda den för att returnera den första måndagen i en viss månad. 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 month', 'weekday 1');

Resultat:

2025-10-06

I det här fallet inträffar den första måndagen i den givna månaden 2025-10-06.

start of month 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 den aktuella månaden

Det här exemplet går igenom processen med det aktuella datumet:

SELECT 
    DATE('now') AS "Now",
    DATE('now', 'start of month') AS "Start of Month",
    DATE('now', 'start of month', 'weekday 1') AS "First Monday";

Resultat:

Now         Start of Month  First Monday
----------  --------------  ------------
2022-03-09  2022-03-01      2022-03-07  

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 month för att flytta tillbaka den till början av månaden och 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 month', 'weekday 1');

Resultat:

2025-10-06 00:00:00

  1. Hur DATE() fungerar i MariaDB

  2. Reverse engineering (oracle) schema till ERD

  3. Oracle INSERT i två tabeller i en fråga

  4. Kan jag återställa en transaktion som jag redan har genomfört? (dataförlust)