質問

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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top