假设date_enter
是一个DATE
字段:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter >= trunc(sysdate)
And CuRo.Date_Enter < trunc(sysdate) + 1;
trunc()
默认情况下,该功能会删除时间部分,因此trunc(sysdate)
您可以在今天早晨午夜12点前使用该功能。
如果您特别想坚持使用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
是包容性的,因此,如果您不休息一会儿,那么您有可能会在今晚的午夜准确地获取记录;因此,这会生成您在原始查询中寻找的23:59:59时间。但我认为无论如何,使用>=
和<
会更清晰,更明确。
如果您确定无论如何都不能晚于今天的日期,则上限实际上并没有添加任何内容,您将得到与以下相同的结果:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter >= trunc(sysdate);
但是,您不想使用trunc
或to_char
在该date_enter
列上;使用任何函数都会阻止使用该列上的索引,这就是为什么查询to_char
速度太慢的原因。