Problema:
Vorresti aggiungere un mese a una data data in un database SQLite.
Esempio:
Il nostro database ha una tabella denominata production
con i dati nelle colonne id
, product
e start_date
.
id | prodotto | data_inizio |
---|---|---|
1 | scrivania | 17-08-2019 |
2 | poltrona | 17-07-2019 |
3 | divano | 31-10-2019 |
I prodotti hanno una nuova data di inizio della produzione che è un mese più tardi rispetto a quanto indicato sopra. Prendiamo i nomi dei prodotti e la loro nuova data di inizio.
Ecco la domanda che scriveresti:
Soluzione:
SELECT product, DATE(start_date,'+1 months') AS new_start_date FROM production;
Ecco il risultato della query:
id | prodotto | nuova_data_di_inizio |
---|---|---|
1 | scrivania | 17-09-2019 |
2 | poltrona | 17-08-2019 |
3 | divano | 01-12-2019 |
Discussione:
Usa SQLite DATE()
funzione per aggiungere un mese a una data data (o data e ora). Gli argomenti richiesti includono la data/data e ora da modificare e uno o più modificatori con valori che indicano quante unità aggiungere o sottrarre.
Il primo argomento può essere un'espressione che restituisce un valore data/ora o una colonna data/ora. Nel nostro esempio, è la colonna start_date
.
I modificatori indicano quale (e quanto) unità di tempo aggiungere/sottrarre. Nel nostro esempio, utilizziamo il modificatore "+1 mese '. Il modificatore inizia con più o meno, indicando addizione o sottrazione. Poi c'è un valore (es. 1) e l'unità (es. mesi , anni , giorni , ecc.) Se scrivi "-2 giorni ', sottrai 2 giorni da una data data.
Importante: Alcuni modificatori richiedono una sintassi leggermente diversa da quella mostrata sopra. Ad esempio, il "giorno della settimana ' il modificatore viene prima del valore (ad esempio DATE(start_date,'weekday 3')
). Altri modificatori non accettano valori, come "inizio mese". ', che mostra il primo giorno del mese per una data data (ad esempio DATE(start_date,' start of month')
). Puoi trovare informazioni precise sui modificatori di data e ora nella documentazione di SQLite.
Abbiamo chiamato la nuova colonna contenente la data di inizio aggiornata new_start_date
. La nuova data di inizio della produzione per il desk è 2019-09-17
, un mese dopo la data originale del 2019-08-17
. Si noti che per il 2019-10-31
, la nuova data è 2019-12-01
; questo perché novembre ha 30 giorni, non 31.