問題:
日付タイプの列が2つあり、それらの差を計算したい。
例:
travel テーブルには、次の3つの列があります:id 、departure 、およびarrival 。 arrivalの差を計算したい およびdeparture 到着から出発までの日数包括的 。
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, arrival - departure AS date_difference, arrival - departure + 1 AS days 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 |
ディスカッション:
PostgreSQLまたはOracleで日付の差を日数としてカウントするには、一方の日付をもう一方の日付から減算するだけです。 arrival - departure 。
しかし、ほとんどの場合、本当に必要なのは、最初のデートから2番目のデートまでの日数です包括的に 。次に、日数の差に1日を追加する必要があります:arrival - departure + 1 。