SQLで2つの日付の間の日数を決定する方法が必要です。
回答はANSISQLである必要があります。
ANSI SQL-92 では、DATE - DATE を INTERVAL 型を返すものとして定義しています。EXTRACT 関数 (4.5.3) を使用して DATE からスカラーを抽出するのと同じ方法で、INTERVALS からスカラーを抽出できるはずです。
<extract expression> は日時または間隔で動作し、日時または間隔の 1 つのコンポーネントの値を表す正確な数値を返します。
ただし、これはほとんどのデータベースで非常に不十分に実装されています。データベース固有のものを使用している可能性があります。DATEDIFF は、さまざまなプラットフォームでうまく実装されています。
これが「本当の」やり方です。
SELECT EXTRACT(DAY FROM DATE '2009-01-01' - DATE '2009-05-05') FROM DUAL;
幸運を!
DATE1-DATE2 をサポートしていない RDBMS を使用したことを覚えていませんが、SQL 92は同意しているようです。
SQL-92 標準では、'-' 演算子を使用した 2 つの日付の減算がサポートされていると思います。
SQL 92 は、次の構文をサポートしています。
t.date_1 - t.date_2
EXTRACT 関数も ANSI ですが、SQL Server ではサポートされていません。例:
ABS(EXTRACT(DAY FROM t.date_1) - EXTRACT(DAY FROM t.date_2)
絶対値関数で計算をラップすると、最初の日付が小さい日付であっても、値が正の値になることが保証されます。
EXTRACT は以下でサポートされています。