W SQLite możemy użyć DATE()
funkcja, aby dodać jeden lub więcej miesięcy do daty.
Kiedy mamy do czynienia z wartościami datetime, możemy użyć DATETIME()
funkcja.
Przykład
Oto przykład, w którym użyto DATE()
funkcja:
SELECT DATE('2050-08-21', '+1 month');
Wynik:
2050-09-21
Gdybyśmy chcieli odjąć kwotę, moglibyśmy zastąpić +
z -
.
Również pomijając +
część powoduje dodanie kwoty, tak jakbyśmy użyli +
:
SELECT DATE('2050-08-21', '1 month');
Wynik:
2050-09-21
Miesiące możemy podać w liczbie mnogiej lub innej. Innymi słowy, month
jest odpowiednikiem months
:
SELECT
DATE('2050-08-21', '+3 month') AS month,
DATE('2050-08-21', '+3 months') AS months;
Wynik:
month months ---------- ---------- 2050-11-21 2050-11-21
Określone w dniach
Alternatywnie możemy dodać miesiąc lub więcej do daty na podstawie liczby dni:
SELECT DATE('2050-08-21', '+31 days');
Wynik:
2050-09-21
Pamiętaj jednak, że będzie to wymagało dokładnej wiedzy, ile dni jest odpowiednich dla danych miesięcy. Niektóre miesiące mają 30 dni, inne 31, a luty 28 lub 29, w zależności od tego, czy jest to rok przestępny, czy nie.
Z month
/months
modyfikator, SQLite normalizuje datę w oparciu o liczbę dni w danym miesiącu/miesiącach.
Oto porównanie miesięcy i dni podczas dodawania do daty w marcu:
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";
Wynik:
1 month 30 days 31 days ---------- ---------- ---------- 2050-05-01 2050-04-30 2050-05-01
A oto to samo porównanie przy dodawaniu do daty we wrześniu:
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";
Wynik:
1 month 30 days 31 days ---------- ---------- ---------- 2050-10-30 2050-10-30 2050-10-31
DATETIME()
Funkcja
Oto przykład, który pokazuje, jak używać DATETIME()
funkcja dodawania miesiąca do wartości daty i godziny:
SELECT DATETIME('2050-08-21', '+1 month');
Wynik:
2050-09-21 00:00:00
W tym przypadku przekazałem wartość daty, ale funkcja zwróciła wartość daty i godziny.
Oto kolejny przykład, tym razem z wartością daty i godziny:
SELECT DATETIME('2050-08-21 18:30:45', '+1 month');
Wynik:
2050-09-21 18:30:45