Probleem:
U heeft twee kolommen van het datumtype en u wilt het verschil daartussen berekenen.
Voorbeeld:
In de travel tabel, zijn er drie kolommen:id , departure , en arrival . U wilt het verschil berekenen tussen arrival en departure , of het aantal dagen vanaf arrival inclusief vertrek.
De travel tabel ziet er als volgt uit:
| id | vertrek | aankomst |
|---|---|---|
| 1 | 25-03-2018 | 05-04-2018 |
| 2 | 2019-09-12 | 23-09-2019 |
| 3 | 2018-07-14 | 2018-07-14 |
| 4 | 05-01-2018 | 2018-01-08 |
Oplossing:
SELECT id, departure, arrival, DATEDIFF(day, departure, arrival) AS date_difference, DATEDIFF(day, departure, arrival) + 1 AS days_inclusive FROM travel;
Het resultaat is:
| id | vertrek | aankomst | date_difference | dagen |
|---|---|---|---|---|
| 1 | 25-03-2018 | 05-04-2018 | 11 | 12 |
| 2 | 2019-09-12 | 23-09-2019 | 11 | 12 |
| 3 | 2018-07-14 | 2018-07-14 | 0 | 1 |
| 4 | 05-01-2018 | 2018-01-08 | 3 | 4 |
Discussie:
Om het verschil tussen datums te vinden, gebruikt u de DATEDIFF(datepart, startdate, enddate) functie. Het datepart argument definieert het deel van de datum/datumtijd waarin u het verschil wilt uitdrukken. De waarde kan year zijn , quarter , month , day , minute , etc. In dit voorbeeld wil je het verschil in dagen uitdrukken, dus het eerste argument is dag. De twee andere argumenten zijn de datum waarop u begint met tellen en de datum waarop u stopt met tellen. In dit geval departure en arrival , respectievelijk.
In de meeste gevallen is wat je echt wilt het aantal dagen vanaf de eerste date tot de tweede date inclusief . Dan moet je 1 dag bij het verschil in dagen optellen:DATEDIFF(day, departure, arrival) + 1 .