In SQLite, possiamo usare DATE()
funzione per aggiungere uno o più mesi a una data.
Quando abbiamo a che fare con valori datetime, possiamo usare DATETIME()
funzione.
Esempio
Ecco un esempio che utilizza DATE()
funzione:
SELECT DATE('2050-08-21', '+1 month');
Risultato:
2050-09-21
Se volessimo sottrarre l'importo, potremmo sostituire +
con -
.
Inoltre, omettendo il +
parte comporta l'aggiunta dell'importo, come se avessimo usato +
:
SELECT DATE('2050-08-21', '1 month');
Risultato:
2050-09-21
Possiamo specificare i mesi in forma plurale o non plurale. In altre parole, month
è equivalente a months
:
SELECT
DATE('2050-08-21', '+3 month') AS month,
DATE('2050-08-21', '+3 months') AS months;
Risultato:
month months ---------- ---------- 2050-11-21 2050-11-21
Specificato in giorni
In alternativa possiamo aggiungere un mese o più alla data in base a un numero di giorni:
SELECT DATE('2050-08-21', '+31 days');
Risultato:
2050-09-21
Tuttavia, tieni presente che ciò richiederà di sapere esattamente quanti giorni sono appropriati per i mesi coinvolti. Alcuni mesi hanno 30 giorni, altri 31 e febbraio ne ha 28 o 29, a seconda che sia un anno bisestile o meno.
Con il month
/months
modificatore, SQLite normalizza la data, in base al numero di giorni nel/i mese/i rilevante/i.
Ecco un confronto tra mesi e giorni durante l'aggiunta a una data di marzo:
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";
Risultato:
1 month 30 days 31 days ---------- ---------- ---------- 2050-05-01 2050-04-30 2050-05-01
Ed ecco lo stesso confronto quando si aggiunge una data a settembre:
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";
Risultato:
1 month 30 days 31 days ---------- ---------- ---------- 2050-10-30 2050-10-30 2050-10-31
Il DATETIME()
Funzione
Ecco un esempio che mostra come utilizzare DATETIME()
funzione per aggiungere un mese a un valore datetime:
SELECT DATETIME('2050-08-21', '+1 month');
Risultato:
2050-09-21 00:00:00
In questo caso, ho passato un valore di data, ma la funzione ha restituito un valore di data e ora.
Ecco un altro esempio, questa volta con un valore datetime:
SELECT DATETIME('2050-08-21 18:30:45', '+1 month');
Risultato:
2050-09-21 18:30:45