sql >> データベース >  >> RDS >> Oracle

Oracle Select Where Date Between Today

    date_enterを想定 DATEです フィールド:

    Select * From Customer_Rooms CuRo
       Where CuRo.Date_Enter >= trunc(sysdate)
       And CuRo.Date_Enter < trunc(sysdate) + 1;
    

    trunc() 関数はデフォルトで時間部分を削除するため、trunc(sysdate) 今朝は真夜中です。

    特にbetweenに固執したい場合 、そしてあなたはDATEを持っています TIMESTAMPではありません 、次のことができます:

    Select * From Customer_Rooms CuRo
       Where CuRo.Date_Enter between trunc(sysdate)
          And trunc(sysdate) + interval '1' day - interval '1' second;
    

    between 包括的であるため、1秒も休まないと、今夜の真夜中からレコードを取得する可能性があります。したがって、これにより、元のクエリで探していた23:59:59の時間が生成されます。ただし、>=を使用する および< とにかく、私の意見では、少し明確で明確です。

    とにかく今日より後の日付を持つことができないと確信している場合、上限は実際には何も追加しておらず、次のようにすると同じ結果が得られます:

    Select * From Customer_Rooms CuRo
       Where CuRo.Date_Enter >= trunc(sysdate);
    

    truncを使用したくない またはto_char date_enterに しかしコラム;関数を使用すると、その列のインデックスが使用されなくなります。そのため、to_charを使用してクエリを実行します。 遅すぎた。



    1. ユーザーが選択したcsvファイルをデータベースにインポートする方法

    2. mysql_real_escape_string()とmysql_escape_string()はアプリのセキュリティに十分ですか?

    3. Oracleのレコードを複数の小数点(。)で並べ替える

    4. ユーザーがテキストボックスに何も入力しない場合、テーブルは空のスペースを更新します