首页 > 解决方案 > 查询特定时间

问题描述

如何将 2 天前晚上 11:00:00 的数据返回到昨天晚上 11:59:59 结束的所有数据?

我目前只有昨天的日期查询:

SELECT *
FROM table
WHERE code = '00'
AND to_char(RQST_TMSTMP, 'yyyy-mm-dd') = to_char(sysdate-1, 'yyyy-mm-dd')

标签: oracle

解决方案


怎么样

select *
from table
where code = '00'
  and rqst_tmstmp >= trunc(sysdate - 2) + 11/24
  and rqst_tmstmp <= trunc(sysdate);

以下是所有这些TRUNCs 所代表的内容(以便您可以了解正在发生的事情):

SQL> select sysdate,                      -- today, right now
  2    trunc(sysdate) ts,                 -- today at midnight
  3    trunc(sysdate - 2) ts_2,           -- 2 days ago at midnight
  4    trunc(sysdate - 2) + 11/24 ts_2_11 -- 2 days ago at midnight + 11 hours 
  5  from dual;

SYSDATE          TS               TS_2             TS_2_11
---------------- ---------------- ---------------- ----------------
29.11.2018 17:07 29.11.2018 00:00 27.11.2018 00:00 27.11.2018 11:00

SQL>

推荐阅读