2つの日付間の日数-ANSI SQL
-
05-07-2019 - |
質問
SQLの2つの日付間の日数を決定する方法が必要です。
AnswerはANSI SQLである必要があります。
解決
ANSI SQL-92は、DATE-DATEをINTERVAL型を返すものとして定義しています。 <!>#8211を使用してDATEからスカラーを抽出するのと同じ方法を使用して、INTERVALSからスカラーを抽出できるはずです。適切に十分な<!>#8211; EXTRACT関数(4.5.3)。
<!> lt; extract expression <!> gt;で動作します 日時または間隔を返し、 を表す正確な数値 日時の1つのコンポーネントの値 または間隔。
ただし、これはほとんどのデータベースで非常に不十分に実装されています。おそらく、データベース固有の何かを使用して立ち往生しています。 DATEDIFFは、さまざまなプラットフォームでかなりうまく実装されています。
<!> quot; real <!> quot;その方法。
SELECT EXTRACT(DAY FROM DATE '2009-01-01' - DATE '2009-05-05') FROM DUAL;
がんばって!
他のヒント
DATE1-DATE2および 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は次でサポートされています:
- Oracle 9i +
- MySQL
- Postgres
所属していません StackOverflow