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_datecolonna.) - La data di inizio. (Nel nostro esempio, è il
purchase_datecolonna.)
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.