sql >> Database >  >> RDS >> SQLite

Retourneer de eerste maandag van elke maand in SQLite

We kunnen SQLite's DATE() . gebruiken functie om de eerste maandag van elke maand voor een bepaald jaar terug te geven, op basis van de datum die we verstrekken.

Maar het is niet beperkt tot maandag. We kunnen ook de eerste dinsdag, woensdag, donderdag, vrijdag, enz. van elke maand krijgen.

Voorbeeld

We kunnen ook de volgende code gebruiken om het hele jaar door de eerste maandag van elke maand terug te keren:

SELECT 
    DATE('2025-10-20', 'start of year', 'weekday 1') AS "Jan",
    DATE('2025-10-20', 'start of year', '+1 month', 'weekday 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', 'weekday 1') AS "May",
    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', 'start of year', '+9 months', 'weekday 1') AS "Oct",
    DATE('2025-10-20', 'start of year', '+10 months', 'weekday 1') AS "Nov",
    DATE('2025-10-20', 'start of year', '+11 months', 'weekday 1') AS "Dec";

Resultaat:

Jan         Feb         Mar         Apr         May         Jun         Jul         Aug         Sep         Oct         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-01

Hier noemen we de DATE() twaalf keer functioneren. We gebruiken elke keer dezelfde datum en de meeste argumenten zijn hetzelfde. Het enige dat verandert, is hoeveel we toevoegen aan het begin van het jaar.

We gebruiken start of year om de datum terug te zetten naar de eerste dag van het jaar. We gebruiken dan extra modifiers om die datum dienovereenkomstig aan te passen.

Als we geen maanden aan de datum toevoegen, keren we terug op de eerste maandag van januari. +1 month toevoegen geeft de eerste maandag van februari terug, enzovoort.

De weekday 1 modifier verplaatst de datum naar de volgende maandag. Zondag is 0, maandag is 1, dinsdag is 2, enzovoort, dus als we bijvoorbeeld dinsdag zouden willen, zouden we weekday 2 gebruiken in plaats daarvan.

De huidige datum gebruiken

In het volgende voorbeeld wordt de huidige datum gebruikt:

SELECT 
    DATE('now') AS "Now",
    DATE('now', 'start of year', 'weekday 1') AS "Jan",
    DATE('now', 'start of year', '+1 month', 'weekday 1') AS "Feb",
    DATE('now', 'start of year', '+2 months', 'weekday 1') AS "Mar",
    DATE('now', 'start of year', '+3 months', 'weekday 1') AS "Apr",
    DATE('now', 'start of year', '+4 months', 'weekday 1') AS "May",
    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 months', 'weekday 1') AS "Sep",
    DATE('now', 'start of year', '+9 months', 'weekday 1') AS "Oct",
    DATE('now', 'start of year', '+10 months', 'weekday 1') AS "Nov",
    DATE('now', 'start of year', '+11 months', 'weekday 1') AS "Dec";

Resultaat:

Now         Jan         Feb         Mar         Apr         May         Jun         Jul         Aug         Sep         Oct         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  2022-09-05  2022-10-03  2022-11-07  2022-12-05

  1. PostgreSQL:tabel maken als deze niet bestaat AS

  2. Het samenvoegen van meerdere tabellen retourneert de NULL-waarde

  3. CASE-instructie binnen WHERE-clausule in SQL Server 2008

  4. Hoe voorloop- en volgspaties in MySQL te verwijderen