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

时间:2015-02-26 07:14:24

标签: sql oracle

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

提前致谢。

2 个答案:

答案 0 :(得分:1)

对于前一天下午6点,您可以使用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>

所以,截断(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>

答案 1 :(得分:0)

如果您想要所需的结果,那么首先您必须将列的数据类型更改为Timestamp.然后将值随时间存储到该列中。然后 试试这个: -

SELECT *
FROM TAB_NAME
WHERE EXTRACT (HOUR FROM create_date) >= 6
AND EXTRACT (DATE FROM create_date) = SYSDATE - 1