如何在oracle中选择昨天特定时间到今天特定时间之间的数据?

Gan*_*ans 4 oracle oracle11g

我有一个要求,我必须显示每天特定日期和时间之间的记录,例如。昨天上午 9 点到今天上午 9 点之间

Select * from sales where saledate between '24-OCT-17 09:00:00' to '25-OCT-17 09:00:00'
Run Code Online (Sandbox Code Playgroud)

在甲骨文中。

但不知道如何做到这一点。

小智 8

今天上午9 点可以编码为

trunc(sysdate) + 9/24
Run Code Online (Sandbox Code Playgroud)

昨天上午9点

trunc(sysdate) - 1 + 9/24
Run Code Online (Sandbox Code Playgroud)

或者,

trunc(sysdate) + interval '9' hour
Run Code Online (Sandbox Code Playgroud)

trunc(sysdate) - interval '1' day + interval '9' hour
Run Code Online (Sandbox Code Playgroud)

“昨天”的计算可以简化( - 15/24 而不是 - 1 + 9/24,类似地interval) - 但最好按照我的方式编写代码,因为它更清晰 - 更容易理解和维持。

trunc(sysdate)指今天开始的午夜 (00:00:00) 。在日期算术中,1表示一天;9/24意思是9个小时。

WHERE 子句可以写成

where saledate >= trunc(sysdate) - 1 + 9/24 and saledate < trunc(sysdate) + 9/24
Run Code Online (Sandbox Code Playgroud)