2012-01-02 9 views
-3

私はOracle 11gを新規に導入しました&質問があります。Oracle 11gの日付比較

Datecreated_dateカラムを持つテーブルdummyがあります。

created_date + 7日が今日の日付よりも小さいすべてのレコードを返すクエリが必要です。

Oracle 11gではどのようなタイプのクエリがこれを実行しますか?

+5

私はあなたがこれらの良い答えを得ることは幸運だと思います。あなたは少なくともクエリを試みるべきです - これは非常に基本的なものなので、SQLについて少し読んでください。 – Randy

答えて

4

Oracleはあなたが日付の計算のための+を使用することができますので、

where table.created_date >= sysdate 
and table.created_date < sysdate + 7 

はまさに今まさに今、プラス7日の間の行を見つけます。

あなたは時間コンポーネントを含めない場合、あなたはtrunc()機能

where trunc(table.created_date) >= trunc(sysdate) 
and trunc(table.created_date) < trunc(sysdate) + 7 
+0

ありがとう!単に "creation_date + 7 = sysdate AND created_date Mike

+0

'creation_date + 7 rejj

4

を使用することができます私はrejjのソリューションは将来的にあなたの今と7日の間のレコードを与えるだろうと思います。あなたの説明から、おそらく過去7日間にそれらのレコードが必要なように思えます。これは、より明確にする、と同等であることが

WHERE created_date <= SYSDATE 
    AND created_date >= SYSDATE - 7 

WHERE created_date BETWEEN SYSDATE AND (SYSDATE - 7) 

はTRUNC()を使用すると、オプティマイザはcreated_dateにあなたが持っているすべてのインデックスをバイパスするようになりますことに注意してください、私はこれを行うだろう機能インデックスが定義されている場合を除きます。 INTERVAL定数を使用して

0

SELECT * 
    FROM DUMMY 
    WHERE CREATED_DATE >= TRUNC(SYSDATE) - INTERVAL '7' DAY 

共有し、楽しみのように、日付計算をより明確にすることができます。