oracle:查询带有可变日期的时间戳

时间:2016-05-09 01:22:43

标签: database oracle date-arithmetic

在我的所有脚本中,我想查询Oracle,为我提供时间戳小于今天日期(今天上午12点)的行,并且大于最后一天(上午12点) 我已经提出了以下脚本:

WHERE DAILY_OPEN_POSITIONS.OPEN_TIMESTAMP <= (SELECT SYSTIMESTAMP FROM DUAL) 
AND DAILY_OPEN_POSITIONS.OPEN_TIMESTAMP >= (SELECT SYSTIMESTAMP - INTERVAL '2' DAY FROM dual) 

但这并不是我想要的,因为它提供的行不是在上午12点开始,而是从当前时间开始。

我正在寻找一种方法将变量日期(每天日期)和常量时间(上午12点)混合在一起,所以我的查询将仅限于:

WHERE DAILY_OPEN_POSITIONS.OPEN_TIMESTAMP <= (today's date started at 12 am) 
AND DAILY_OPEN_POSITIONS.OPEN_TIMESTAMP >= (yesterday's date started at 12 am 

1 个答案:

答案 0 :(得分:3)

您不需要子查询来访问功能。我想你只想要trunc()

WHERE DAILY_OPEN_POSITIONS.OPEN_TIMESTAMP <= trunc(SYSTIMESTAMP) AND 
      DAILY_OPEN_POSITIONS.OPEN_TIMESTAMP >= trunc(SYSTIMESTAMP - INTERVAL '2' DAY) 

但是,我认为它应该是&#39; 1&#39;第二天的第二天。