Проблем:
Имате две колони от типа дата и искате да изчислите разликата между тях.
Пример:
В travel
таблица, има три колони:id
, departure
и arrival
. Искате да изчислите разликата между arrival
и departure
, или броя на дните от arrival
до тръгване включително.
travel
таблицата изглежда така:
id | заминаване | пристигане |
---|---|---|
1 | 25.03.2018 | 05.04.2018 |
2 | 12.09.2019 | 23.09.2019 |
3 | 14.07.2018 | 14.07.2018 |
4 | 2018-01-05 | 08.01.2018 |
Решение:
SELECT id, departure, arrival, DATEDIFF(arrival, departure) AS date_difference, DATEDIFF(arrival, departure) + 1 AS days_inclusive FROM travel;
Резултатът е:
id | заминаване | пристигане | разлика_дата | days_inclusive |
---|---|---|---|---|
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 | 2018-01-05 | 08.01.2018 | 3 | 4 |
Дискусия:
За да преброите разликата между датите в MySQL, използвайте DATEDIFF(enddate, startdate)
функция. Разликата между startdate
и enddate
се изразява в дни. В този случай enddate
е arrival
и startdate
е departure
.
В повечето случаи обаче това, което наистина искате, е броят на дните от първата дата до втората дата включително . Трябва да добавите 1 ден към разликата:DATEDIFF(arrival, departure) + 1
.