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(day, departure, arrival) AS date_difference, DATEDIFF(day, departure, arrival) + 1 AS days_inclusive FROM travel;
Resultatet er:
| id | afgang | ankomst | dato_difference | dage |
|---|---|---|---|---|
| 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 finde forskellen mellem datoer skal du bruge DATEDIFF(datepart, startdate, enddate) fungere. datepart argument definerer den del af datoen/datoen, hvor du vil udtrykke forskellen. Dens værdi kan være year , quarter , month , day , minute osv. I dette eksempel vil du udtrykke forskellen i dage, så det første argument er dag. De to andre argumenter er datoen, hvorfra du begynder at tælle, og datoen, hvor du stopper med at tælle – I dette tilfælde departure og arrival hhv.
I de fleste tilfælde er det, du virkelig ønsker, antallet af dage fra den første dato til den anden dato inklusive . Så skal du tilføje 1 dag til forskellen i dage:DATEDIFF(day, departure, arrival) + 1 .