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

时间:2017-10-25 13:43:12

标签: oracle oracle11g

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

Select * from sales where saledate between '24-OCT-17 09:00:00' to '25-OCT-17 09:00:00'

在oracle。

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

2 个答案:

答案 0 :(得分:2)

上午9点今天可以编码为

trunc(sysdate) + 9/24

和上午9点昨天

trunc(sysdate) - 1 + 9/24

可替换地,

trunc(sysdate) + interval '9' hour

trunc(sysdate) - interval '1' day + interval '9' hour

"昨天"的计算可以简化( - 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

答案 1 :(得分:1)

您需要将字符串转换为日期:

Select * from sales 
where saledate between to_date('24-OCT-17 09:00:00','dd-MON-yy hh24:mi:ss') and to_date('25-OCT-17 09:00:00','dd-MON-yy hh24:mi:ss');