我有一个要求,我必须每天显示特定日期和时间之间的记录,例如。昨天上午9点至今天上午9点
Select * from sales where saledate between '24-OCT-17 09:00:00' to '25-OCT-17 09:00:00'
在oracle。
但不知道如何做到这一点。
答案 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');