Problem:
Du har två kolumner av datumtypen och du vill beräkna skillnaden mellan dem.
Exempel:
I travel
tabell, det finns tre kolumner:id
, departure
och arrival
. Du vill beräkna skillnaden mellan arrival
och departure
, eller antalet dagar från arrival
till avgång inklusive.
travel
tabellen ser ut så här:
id | avgång | ankomst |
---|---|---|
1 | 2018-03-25 | 2018-04-05 |
2 | 2019-09-12 | 2019-09-23 |
3 | 2018-07-14 | 2018-07-14 |
4 | 2018-01-05 | 2018-01-08 |
Lösning:
SELECT id, departure, arrival, DATEDIFF(arrival, departure) AS date_difference, DATEDIFF(arrival, departure) + 1 AS days_inclusive FROM travel;
Resultatet är:
id | avgång | ankomst | date_difference | days_inclusive |
---|---|---|---|---|
1 | 2018-03-25 | 2018-04-05 | 11 | 12 |
2 | 2019-09-12 | 2019-09-23 | 11 | 12 |
3 | 2018-07-14 | 2018-07-14 | 0 | 1 |
4 | 2018-01-05 | 2018-01-08 | 3 | 4 |
Diskussion:
För att räkna skillnaden mellan datum i MySQL, använd DATEDIFF(enddate, startdate)
fungera. Skillnaden mellan startdate
och enddate
uttrycks i dagar. I det här fallet, enddate
är arrival
och startdate
är departure
.
I de flesta fall är det du verkligen vill ha antalet dagar från det första datumet till det andra datumet inklusive . Du måste lägga till 1 dag till skillnaden:DATEDIFF(arrival, departure) + 1
.