从前一天下午6点到当天下午6点检索数据

shi*_*nek 5 sql oracle

我有一个列"create_date"的表.我想选择在前一天下午6点到当天下午6点之间插入的记录.这个数据每天都要提取,无需手动输入日期和时间.所以任何人都可以帮我写一个查询来获取属于这个标准的记录.列数据类型为Date.

提前致谢.

Lal*_*r B 2

对于前一天的 6PM,您可以使用TRUNC(SYSDATE -1),这会将时间部分截断为00:00:00,然后添加 18 小时。同样,对于今天,TRUNC(SYSDATE)添加 18 小时。

SQL> SELECT to_char(trunc(SYSDATE -1) + 18/24,'mm/dd/yyyy hh24:mi:ss')
  2  FROM dual;

TO_CHAR(TRUNC(SYSDA
-------------------
02/25/2015 18:00:00

SQL>
Run Code Online (Sandbox Code Playgroud)

因此,trunc(SYSDATE -1) + 18/24给出昨天的日期为下午 6 点。

测试用例:

SQL> WITH DATA AS
  2    ( SELECT 'text' col, SYSDATE create_date FROM dual
  3    )
  4  SELECT *
  5  FROM DATA
  6  WHERE create_date
  7  BETWEEN (TRUNC(sysdate -1) + 18/24) AND (TRUNC(sysdate) + 18/24)
  8  /

COL  CREATE_DA
---- ---------
text 26-FEB-15

SQL>
Run Code Online (Sandbox Code Playgroud)