Problema:
Vorresti ottenere la differenza, in giorni, tra due date in un database MySQL.
Esempio:
Il nostro database ha una tabella denominata food
con i dati nelle colonne id
, name
, purchase_date
e expiration_date
.
id | data_di_acquisto | data_di_scadenza | |
---|---|---|---|
1 | pane | 20-07-2019 | 22-08-2019 |
2 | burro | 30-07-2018 | 10-08-2019 |
3 | latte | 12-01-2019 | 13-01-2019 |
4 | yogurt | 25-02-2019 | 24-02-2019 |
Per ogni prodotto alimentare, otteniamo il nome del prodotto e il numero di giorni tra la sua scadenza e la data di acquisto.
Soluzione:
Useremo il DATEDIFF()
funzione. Ecco la domanda che scriveresti:
SELECT name, DATEDIFF(expiration_date, purchase_date) AS days FROM food;
Ecco il risultato della query:
nome | giorni|
---|---|
pane | 33 |
burro | 376 |
latte | 1 |
yogurt | -1 |
Discussione:
Usa il DATEDIFF()
funzione per recuperare il numero di giorni tra due date in un database MySQL. Questa funzione accetta due argomenti:
- La data di fine. (Nel nostro esempio, è il
expiration_date
colonna.) - La data di inizio. (Nel nostro esempio, è il
purchase_date
colonna.)
Questi argomenti possono essere valori date/datetime, espressioni che restituiscono valori date/datetime o colonne del tipo di dati datetime o date.
Questa funzione sottrae la data di inizio dalla data di fine e restituisce il numero di giorni come numero intero. Nel nostro esempio, burro è stato acquistato il "30-07-2018", ma la sua data di scadenza era "10-08-2019"; dopo l'acquisto, potrebbe essere consumato per 376 giorni. Si noti che lo yogurt è stato acquistato come prodotto obsoleto:la differenza in giorni è -1 e la data di acquisto è successiva alla data di scadenza.