Oracle选择今天之间的日期
我有一个像这样的Oracle SELECT查询:
Select * From Customer_Rooms CuRo Where CuRo.Date_Enter Between 'TODAY 12:00:00 PM' And 'TODAY 11:59:59 PM'
我的意思是,我想选择字段“ date_enter”今天所在的所有位置。我已经尝试过类似Trunc(Sysdate) || '
12:00:00'的操作,但是没有用。
我不能使用TO_CHAR,因为它变得太慢。
回答:
假设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
速度太慢的原因。
以上是 Oracle选择今天之间的日期 的全部内容, 来源链接: utcz.com/qa/400654.html