Oracleでは、DATE
常に時間要素があります。クライアントは時間コンポーネントを表示する場合と表示しない場合がありますが、同等性の比較を行おうとすると、時間コンポーネントは表示されたままになります。また、現在のセッションのNLS_DATE_FORMAT
を使用する文字列ではなく、常に日付を日付と比較する必要があります。 暗黙の変換を行うため、それらをかなり脆弱にします。 THatには、ANSI日付リテラルまたは明示的なto_date
のいずれかが含まれます。 通話
TRUNC
を使用できます DATE
を切り捨てる関数 深夜まで
SELECT *
FROM porder
WHERE trunc(odate) = date '2013-10-04'
または、範囲比較を行うこともできます(odate
のインデックスを利用できると、より効率的になります。 )
SELECT *
FROM porder
WHERE odate >= to_date( '04-Oct-2013', 'DD-Mon-YYYY' )
AND odate < to_date( '05-Oct-2013', 'DD-Mon-YYYY' );