問題:
日付タイプの列が2つあり、それらの差を計算したい。
例:
travel
テーブルには、次の3つの列があります:id
、departure
、およびarrival
。 arrival
の差を計算したい およびdeparture
、またはarrival
からの日数 包括的に出発します。
travel
テーブルは次のようになります:
id | ||
---|---|---|
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 |
解決策:
SELECT id, departure, arrival, DATEDIFF(arrival, departure) AS date_difference, DATEDIFF(arrival, departure) + 1 AS days_inclusive FROM travel;
結果は次のとおりです。
id | 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 |
ディスカッション:
MySQLの日付間の差をカウントするには、DATEDIFF(enddate, startdate)
を使用します 働き。 startdate
の違い およびenddate
日数で表されます。この場合、enddate
arrival
です およびstartdate
departure
です 。
ただし、ほとんどの場合、本当に必要なのは、最初のデートから2番目のデートまでの日数です包括的 。差額に1日を追加する必要があります:DATEDIFF(arrival, departure) + 1
。