Możemy użyć funkcji DATE()
SQLite'a funkcja do wykonania obliczeń w określonym dniu. Jedną z rzeczy, które możemy zrobić, jest zwrócenie pierwszego, drugiego, trzeciego lub czwartego wystąpienia danego dnia w danym miesiącu.
Przykład
Oto przykład do zademonstrowania:
SELECT
DATE('2025-10-20', 'start of month', 'weekday 1') AS "First",
DATE('2025-10-20', 'start of month', '+7 days', 'weekday 1') AS "Second",
DATE('2025-10-20', 'start of month', '+14 days', 'weekday 1') AS "Third",
DATE('2025-10-20', 'start of month', '+21 days', 'weekday 1') AS "Fourth",
DATE('2025-10-20', 'start of month', '+28 days', 'weekday 1') AS "Fifth";
Wynik:
First Second Third Fourth Fifth ---------- ---------- ---------- ---------- ---------- 2025-10-06 2025-10-13 2025-10-20 2025-10-27 2025-11-03
W tym przykładzie data rozpoczęcia jest taka sama dla wszystkich wystąpień, jak również dla większości argumentów. Jedyną rzeczą, która się zmienia, jest to, ile dodamy na początku miesiąca. Jeśli nic nie dodamy, możemy zwrócić w pierwszy poniedziałek, dodanie 7 dni zwraca w drugi poniedziałek i tak dalej.
Tutaj używamy start of month
aby przywrócić datę do pierwszego dnia miesiąca. Następnie używamy więcej modyfikatorów, aby odpowiednio zmodyfikować tę datę.
weekday 1
modyfikator przesuwa datę do przodu na następny poniedziałek (niedziela to 0, poniedziałek to 1, wtorek to 2 itd.).
Aby uzyskać drugi poniedziałek, możemy użyć +7 days
przesunąć datę do przodu o tydzień. Na kolejne poniedziałki dodajemy do tej liczby 7 dni (+14 days
, +21 days
, +28 days
itp).
Widzimy również, że dodanie 28 dni zwraca pierwszy poniedziałek następnego miesiąca.