Problem:
Du har to kolonner af datotypen, og du vil beregne forskellen mellem dem.
Eksempel:
I travel
tabel, er der tre kolonner:id
, departure
, og arrival
. Du vil gerne beregne forskellen mellem arrival
og departure
, eller antallet af dage fra arrival
til afgang inklusive.
travel
tabellen ser sådan ud:
id | afgang | 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 er:
id | afgang | ankomst | dato_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:
For at tælle forskellen mellem datoer i MySQL skal du bruge DATEDIFF(enddate, startdate)
fungere. Forskellen mellem startdate
og enddate
er udtrykt i dage. I dette tilfælde er enddate
er arrival
og startdate
er departure
.
I de fleste tilfælde er det, du virkelig ønsker, antallet af dage fra den første dato til den anden dato inklusive . Du skal tilføje 1 dag til forskellen:DATEDIFF(arrival, departure) + 1
.