Можем да използваме DATE()
на SQLite функция за извършване на изчисления на дадена дата. Едно от нещата, които можем да направим, е да върнем първия, втория, третия или четвъртия екземпляр от даден ден в рамките на даден месец.
Пример
Ето пример за демонстрация:
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";
Резултат:
First Second Third Fourth Fifth ---------- ---------- ---------- ---------- ---------- 2025-10-06 2025-10-13 2025-10-20 2025-10-27 2025-11-03
В този пример началната дата е една и съща за всички екземпляри, както и за повечето аргументи. Единственото нещо, което се променя, е колко добавяме към началото на месеца. Ако не добавим нищо, можем да върнем първия понеделник, добавянето на 7 дни връща втория понеделник и т.н.
Тук използваме start of month
за да върнете датата обратно към първия ден от месеца. След това използваме повече модификатори, за да променим съответно тази дата.
weekday 1
модификаторът премества датата напред към следващия понеделник (неделя е 0, понеделник е 1, вторник е 2 и т.н.).
За да получим втория понеделник, можем да използваме +7 days
за напредване на датата с една седмица. За следващите понеделници добавяме 7 дни към това число (+14 days
). , +21 days
, +28 days
и др.).
Можем също да видим, че добавянето на 28 дни връща първия понеделник на следващия месец.