I SQLite kan vi bruge DATE()
funktion for at tilføje en eller flere måneder til en dato.
Når vi har at gøre med datetime-værdier, kan vi bruge DATETIME()
funktion.
Eksempel
Her er et eksempel, der bruger DATE()
funktion:
SELECT DATE('2050-08-21', '+1 month');
Resultat:
2050-09-21
Hvis vi ville trække beløbet fra, kunne vi erstatte +
med -
.
Udelad også +
del resulterer i, at beløbet tilføjes, som om vi havde brugt +
:
SELECT DATE('2050-08-21', '1 month');
Resultat:
2050-09-21
Vi kan angive månederne i flertalsform eller ikke-flertalsform. Med andre ord, month
svarer til months
:
SELECT
DATE('2050-08-21', '+3 month') AS month,
DATE('2050-08-21', '+3 months') AS months;
Resultat:
month months ---------- ---------- 2050-11-21 2050-11-21
Specificeret i dage
Vi kan alternativt tilføje en måned eller mere til datoen baseret på et antal dage:
SELECT DATE('2050-08-21', '+31 days');
Resultat:
2050-09-21
Husk dog på, at dette kræver, at du ved præcis, hvor mange dage der er passende for de involverede måneder. Nogle måneder har 30 dage, nogle har 31, og februar har enten 28 eller 29, afhængigt af om det er et skudår eller ej.
Med month
/months
modifikator, normaliserer SQLite datoen, baseret på antallet af dage i den/de relevante måned/r.
Her er en sammenligning mellem måneder og dage, når du tilføjer en dato i marts:
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";
Resultat:
1 month 30 days 31 days ---------- ---------- ---------- 2050-05-01 2050-04-30 2050-05-01
Og her er den samme sammenligning, når du tilføjer en dato i september:
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";
Resultat:
1 month 30 days 31 days ---------- ---------- ---------- 2050-10-30 2050-10-30 2050-10-31
DATETIME()
Funktion
Her er et eksempel, der viser, hvordan man bruger DATETIME()
funktion til at føje en måned til en datetime-værdi:
SELECT DATETIME('2050-08-21', '+1 month');
Resultat:
2050-09-21 00:00:00
I dette tilfælde sendte jeg en datoværdi, men funktionen returnerede en dato-tidsværdi.
Her er et andet eksempel, denne gang med en datetime-værdi:
SELECT DATETIME('2050-08-21 18:30:45', '+1 month');
Resultat:
2050-09-21 18:30:45