Możemy użyć funkcji DATE()
SQLite'a funkcja zwracająca pierwszy poniedziałek każdego miesiąca za dany rok, na podstawie podanej przez nas daty.
Ale to nie ogranicza się do poniedziałku. Możemy również uzyskać pierwszy wtorek, środę, czwartek, piątek itd. każdego miesiąca.
Przykład
Możemy alternatywnie użyć kodu takiego jak poniższy, aby zwrócić pierwszy poniedziałek każdego miesiąca przez cały rok:
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";
Wynik:
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
Tutaj nazywamy DATE()
funkcja dwanaście razy. Za każdym razem używamy tej samej daty, a większość argumentów jest taka sama. Jedyne, co się zmienia, to ile dodamy do początku roku.
Używamy start of year
aby cofnąć datę do pierwszego dnia roku. Następnie używamy dodatkowych modyfikatorów, aby odpowiednio zmodyfikować tę datę.
Gdy nie dodamy do terminu żadnych miesięcy, zwracamy w pierwszy poniedziałek stycznia. Dodanie +1 month
zwraca pierwszy poniedziałek lutego itd.
weekday 1
modyfikator przesuwa datę do przodu na następny poniedziałek. Niedziela to 0, poniedziałek to 1, wtorek to 2 i tak dalej, więc jeśli chcielibyśmy na przykład we wtorek, użyjemy weekday 2
zamiast tego.
Korzystanie z bieżącej daty
Poniższy przykład używa bieżącej daty:
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";
Wynik:
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