問題:
日付タイプの列が2つあり、それらの差を計算したい。
例:
旅行 テーブルには、次の3つの列があります: id 、出発 、および到着 。 到着の差を計算したい およびdeparture 、または到着からの日数 包括的に出発します。
旅行 テーブルは次のようになります:
| 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(day, departure, arrival) AS date_difference, DATEDIFF(day, departure, arrival) + 1 AS days_inclusive FROM travel;
結果は次のとおりです。
| id | date_difference | |||
|---|---|---|---|---|
| 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 |
ディスカッション:
日付の違いを見つけるには、 DATEDIFF(datepart、startdate、enddate)を使用します 働き。 datepart 引数は、違いを表現したい日付/日時の部分を定義します。その値はyearにすることができます 、四半期コード> 、 month 、 day 、分コード> 、など。この例では、日数の差を表現したいので、最初の引数は日です。他の2つの引数は、カウントを開始した日付とカウントを停止した日付です。この場合、 departure および到着 それぞれ。
ほとんどの場合、本当に必要なのは、最初のデートから2番目のデートまでの日数です包括的に 。次に、日数の差に1日を追加する必要があります: DATEDIFF(day、departure、arrival)+ 1 。