sql >> Database teknologi >  >> RDS >> SQLite

Returner den første mandag i hver måned i SQLite

Vi kan bruge SQLites DATE() funktion for at returnere den første mandag i hver måned for et givet år, baseret på den dato, vi angiver.

Men det er ikke begrænset til mandag. Vi kan også få den første tirsdag, onsdag, torsdag, fredag ​​osv. i hver måned.

Eksempel

Vi kan alternativt bruge kode som følgende til at returnere den første mandag i hver måned hele året:

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";

Resultat:

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

Her kalder vi DATE() fungere tolv gange. Vi bruger den samme dato hver gang, og de fleste af argumenterne er de samme. Det eneste, der ændrer sig, er, hvor meget vi tilføjer til starten af ​​året.

Vi bruger start of year at returnere datoen til årets første dag. Vi bruger derefter yderligere modifikatorer til at ændre denne dato i overensstemmelse hermed.

Når vi ikke tilføjer nogen måneder til datoen, vender vi tilbage den første mandag i januar. Tilføjer +1 month returnerer den første mandag i februar og så videre.

weekday 1 modifier flytter datoen frem til næste mandag. Søndag er 0, mandag er 1, tirsdag er 2 og så videre, så hvis vi for eksempel ville have tirsdag, ville vi bruge weekday 2 i stedet.

Brug af den aktuelle dato

Følgende eksempel bruger den aktuelle dato:

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";

Resultat:

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. Sådan bevarer du data i en dockeriseret postgres-database ved hjælp af volumener

  2. Postgres:hvordan runder du et tidsstempel op eller ned til nærmeste minut?

  3. Psycopg2 bruger hukommelse på store udvalgte forespørgsler

  4. Sådan formateres SQLite-forespørgselsresultater i TCL-tilstand