В SQLite можем да използваме DATE() функция за добавяне на един или повече месеца към дата.
Когато имаме работа със стойности за дата и час, можем да използваме DATETIME() функция.
Пример
Ето пример, който използва DATE() функция:
SELECT DATE('2050-08-21', '+1 month'); Резултат:
2050-09-21
Ако искаме да извадим сумата, бихме могли да заменим + с - .
Също така, пропускане на + част води до добавяне на сумата, сякаш сме използвали + :
SELECT DATE('2050-08-21', '1 month'); Резултат:
2050-09-21
Можем да посочим месеците в множествено или немножествено число. С други думи, month е еквивалентен на months :
SELECT
DATE('2050-08-21', '+3 month') AS month,
DATE('2050-08-21', '+3 months') AS months; Резултат:
month months ---------- ---------- 2050-11-21 2050-11-21
Посочено в дни
Алтернативно можем да добавим месец или повече към датата въз основа на брой дни:
SELECT DATE('2050-08-21', '+31 days'); Резултат:
2050-09-21
Въпреки това, имайте предвид, че това ще изисква да знаете точно колко дни са подходящи за съответните месеци. Някои месеци имат 30 дни, други 31, а февруари 28 или 29, в зависимост от това дали е високосна година или не.
С month /months модификатор, SQLite нормализира датата въз основа на броя на дните в съответния месец/и.
Ето сравнение на месеци с дни при добавяне към дата през март:
SELECT
DATE('2050-03-31', '+1 month') AS "1 month",
DATE('2050-03-31', '+30 days') AS "30 days",
DATE('2050-03-31', '+31 days') AS "31 days"; Резултат:
1 month 30 days 31 days ---------- ---------- ---------- 2050-05-01 2050-04-30 2050-05-01
И ето същото сравнение при добавяне към дата през септември:
SELECT
DATE('2050-09-30', '+1 month') AS "1 month",
DATE('2050-09-30', '+30 days') AS "30 days",
DATE('2050-09-30', '+31 days') AS "31 days"; Резултат:
1 month 30 days 31 days ---------- ---------- ---------- 2050-10-30 2050-10-30 2050-10-31
DATETIME() Функция
Ето пример, който демонстрира как да използвате DATETIME() функция за добавяне на месец към стойност за дата и час:
SELECT DATETIME('2050-08-21', '+1 month'); Резултат:
2050-09-21 00:00:00
В този случай предадох стойност за дата, но функцията върна стойност за дата и час.
Ето още един пример, този път със стойност за дата и час:
SELECT DATETIME('2050-08-21 18:30:45', '+1 month'); Резултат:
2050-09-21 18:30:45