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

DATEDIFF() Esempi – MySQL

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 |
+------------+------------+-------+