Oracle选择今天之间的日期

Fel*_*e M 5 sql oracle select

我有一个这样的Oracle SELECT Query:

Select * From Customer_Rooms CuRo
   Where CuRo.Date_Enter Between 'TODAY 12:00:00 PM' And 'TODAY 11:59:59 PM'
Run Code Online (Sandbox Code Playgroud)


我的意思是,我想选择今天"date_enter"字段的所有内容.我已经尝试过像Trunc(Sysdate) || ' 12:00:00'之间的事情,没有用.

建议:我不能使用TO_CHAR,因为它太慢了.

Ale*_*ole 13

假设date_enter是一个DATE字段:

Select * From Customer_Rooms CuRo
   Where CuRo.Date_Enter >= trunc(sysdate)
   And CuRo.Date_Enter < trunc(sysdate) + 1;
Run Code Online (Sandbox Code Playgroud)

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;
Run Code Online (Sandbox Code Playgroud)

between是包容性的,所以如果你不休息一下那么你可能会从今晚午夜开始接收记录; 所以这会产生你在原始查询中寻找的23:59:59时间.但在我看来,无论如何,使用>=并且<更清晰,更明确.

如果你确定你不能在今天晚些时候提供日期,那么上限并没有真正添加任何东西,你只需得到相同的结果:

Select * From Customer_Rooms CuRo
   Where CuRo.Date_Enter >= trunc(sysdate);
Run Code Online (Sandbox Code Playgroud)

你不想在列上使用trunc或者; 使用任何函数都可以防止使用该列的索引,这就是您的查询速度太慢的原因.to_chardate_enterto_char