あなたはベストプラクティスを求めています。以下がベストプラクティスだと思います:
"Date" >= DATE '2014-04-11' AND "Date" < DATE '2014-04-12' + 1
まず、 DATE
の使用に注意してください キーワード。あなたの質問は日付についてです それでも、Oracleが直接サポートしていない日付形式を使用しています。幸い、OracleはANSI標準の DATE
をサポートしています。 ISO標準形式のキーワード。
次に、 +1
を追加しました そのため、期間の終わりを確認できます。これは、おそらくコードで確認したいものです。 + 1
なので、パフォーマンスに影響はありません。 は一定です。
第三に、日付定数には時間要素があります。何も指定されていない場合は、その日の真夜中です。したがって、式:
"Date" BETWEEN '2014-04-11' AND '2014-04-12'
本当に:
"Date" >= TIMESTAMP '2014-04-11 00:00:00' AND "Date" <= TIMESTAMP '2014-04-12 00:00:00'
つまり、後日からちょうど1回、真夜中の最初の瞬間が含まれます。これは通常あなたが望むものではありません。 Oracleは、この問題を2つの方法で悪化させます。
日付コード> データ型には時間コンポーネントが含まれます。
日付
を表示するデフォルトの方法 値には時間要素はありません。
したがって、最も安全にするために、次のルールを使用してください。
-
between
は使用しないでください 日付に。 -
> =
を使用する 初デート。 - ユーザー
<コード> 第二に。
AaronBertrandには date
Oracleのデータ型には時間が含まれます。