В 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