In MySQL, puoi usare DATEDIFF()
funzione per trovare la differenza tra due date. Il modo in cui funziona è fornire due argomenti (uno per ogni data) e DATEDIFF()
restituirà il numero di giorni tra le due date.
Esempi sotto.
Sintassi
Innanzitutto, ecco la sintassi:
DATEDIFF(expr1,expr2)
Dove expr1
è la prima data e expr2
è la seconda data.
Esempio 1 – Utilizzo di base
Ecco un esempio da dimostrare.
SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
Risultato:
+--------+ | Result | +--------+ | 29 | +--------+
In questo esempio, la prima data è successiva alla seconda data. In questo caso otteniamo un valore di ritorno positivo.
Esempio 2:confronto con una data precedente
La prima data non deve essere successiva alla seconda data. Puoi utilizzare una data precedente per il primo argomento e restituirà un valore negativo. Se scambiamo questi due argomenti, otteniamo quanto segue:
SELECT DATEDIFF('2020-10-01', '2020-10-30') AS 'Result';
Risultato:
+--------+ | Result | +--------+ | -29 | +--------+
Esempio 3 – Valori di data e ora
Se utilizzato con datetime valori, solo la parte della data viene utilizzata per confrontare le date. Esempio:
SELECT DATEDIFF('2020-10-30 23:59:59', '2020-10-01') AS 'Result 1', DATEDIFF('2020-10-01 23:59:59', '2020-10-30') AS 'Result 2';
Risultato:
+----------+----------+ | Result 1 | Result 2 | +----------+----------+ | 29 | -29 | +----------+----------+
Esempio 4 – Query database
Ecco un esempio di utilizzo di DATEDIFF()
in una query di database. In questo esempio, confronto il payment_date
colonna con la data odierna (usando il CURDATE()
funzione per restituire la data odierna):
USE sakila; SELECT DATE(payment_date) AS 'Date/Time', CURDATE(), DATEDIFF(payment_date, CURDATE()) AS 'Date' FROM payment WHERE payment_id = 1;
Risultato:
+------------+------------+-------+ | Date/Time | CURDATE() | Date | +------------+------------+-------+ | 2005-05-25 | 2018-06-25 | -4779 | +------------+------------+-------+