Problema:
Hai due colonne del tipo data e vuoi calcolare la differenza tra loro.
Esempio:
Nel travel
tabella, ci sono tre colonne:id
, departure
e arrival
. Vorresti calcolare la differenza tra arrival
e departure
o il numero di giorni dall'arrival
alla partenza inclusiva.
Il travel
la tabella si presenta così:
id | partenza | arrivo |
---|---|---|
1 | 25-03-2018 | 05-04-2018 |
2 | 12-09-2019 | 23-09-2019 |
3 | 14-07-2018 | 14-07-2018 |
4 | 05-01-2018 | 08-01-2018 |
Soluzione:
SELECT id, departure, arrival, DATEDIFF(day, departure, arrival) AS date_difference, DATEDIFF(day, departure, arrival) + 1 AS days_inclusive FROM travel;
Il risultato è:
id | partenza | arrivo | date_difference | giorni |
---|---|---|---|---|
1 | 25-03-2018 | 05-04-2018 | 11 | 12 |
2 | 12-09-2019 | 23-09-2019 | 11 | 12 |
3 | 14-07-2018 | 14-07-2018 | 0 | 1 |
4 | 05-01-2018 | 08-01-2018 | 3 | 4 |
Discussione:
Per trovare la differenza tra le date, usa DATEDIFF(datepart, startdate, enddate)
funzione. Il datepart
argomento definisce la parte della data/data/ora in cui si desidera esprimere la differenza. Il suo valore può essere year
, quarter
, month
, day
, minute
, ecc. In questo esempio, vuoi esprimere la differenza in giorni, quindi il primo argomento è giorno. Gli altri due argomenti sono la data da cui inizi a contare e la data in cui smetti di contare – In questo caso, departure
e arrival
, rispettivamente.
Nella maggior parte dei casi, quello che vuoi veramente è il numero di giorni dalla prima data alla seconda data inclusivamente . Quindi devi aggiungere 1 giorno alla differenza di giorni:DATEDIFF(day, departure, arrival) + 1
.