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