私はOracle 11gを新規に導入しました&質問があります。Oracle 11gの日付比較
Date
のcreated_date
カラムを持つテーブルdummy
があります。
created_date
+ 7日が今日の日付よりも小さいすべてのレコードを返すクエリが必要です。
Oracle 11gではどのようなタイプのクエリがこれを実行しますか?
私はOracle 11gを新規に導入しました&質問があります。Oracle 11gの日付比較
Date
のcreated_date
カラムを持つテーブルdummy
があります。
created_date
+ 7日が今日の日付よりも小さいすべてのレコードを返すクエリが必要です。
Oracle 11gではどのようなタイプのクエリがこれを実行しますか?
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
を使用することができます私はrejjのソリューションは将来的にあなたの今と7日の間のレコードを与えるだろうと思います。あなたの説明から、おそらく過去7日間にそれらのレコードが必要なように思えます。これは、より明確にする、と同等であることが
WHERE created_date <= SYSDATE
AND created_date >= SYSDATE - 7
:
WHERE created_date BETWEEN SYSDATE AND (SYSDATE - 7)
はTRUNC()を使用すると、オプティマイザはcreated_dateにあなたが持っているすべてのインデックスをバイパスするようになりますことに注意してください、私はこれを行うだろう機能インデックスが定義されている場合を除きます。 INTERVAL定数を使用して
は
SELECT *
FROM DUMMY
WHERE CREATED_DATE >= TRUNC(SYSDATE) - INTERVAL '7' DAY
共有し、楽しみのように、日付計算をより明確にすることができます。
私はあなたがこれらの良い答えを得ることは幸運だと思います。あなたは少なくともクエリを試みるべきです - これは非常に基本的なものなので、SQLについて少し読んでください。 – Randy