2016-05-09 27 views
0

在我所有的腳本中,我想查詢Oracle給我的行的時間戳小於今天的日期(今天的日期爲上午12點)和大於最後一天的(上午12點) 我已經想出了下面的腳本:oracle:具有可變日期的查詢時間戳

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 
+0

[Oracle:我可以如何從昨天選擇記錄?](http://stackoverflow.com/questions/1574565/oracle-how-can-i-select-records-only-from-yesterday) –

回答

3

你不需要子查詢訪問功能。我想你只是想trunc()

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

但是,我認爲它應該是在第二個條件'1'日。

+0

是的,應該有一天。但是,腳本如何在00:01運行,那麼間隔-1不會指向最後一天。這是主要問題,我可以明確表示執行查詢在這個日期開始在00和以前的日期開始於00 – Sam

+0

它應該工作在12:01 am –

+0

,但是從昨天在上午12:01到當前時間。我希望它從昨天的12:00到今天的12:00。 – Sam