Mysql
 sql >> Database >  >> RDS >> Mysql

Come trovare il numero di giorni tra due date in MySQL

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:

giorni
nome
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:

  1. La data di fine. (Nel nostro esempio, è il expiration_date colonna.)
  2. 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.