2016-08-16 82 views
-1

我正在使用以下查詢來提取數據。但是,我希望時間精確而不是變數。sqlplus設置顯式時間

WHERE DAILY_OPEN_POSITIONS.REPORT_TIMESTAMP <= SYSTIMESTAMP - INTERVAL '3' HOUR + INTERVAL '1' MINUTE 
AND DAILY_OPEN_POSITIONS.REPORT_TIMESTAMP >= SYSTIMESTAMP - INTERVAL '3' HOUR - INTERVAL '1' MINUTE 

我希望接受這樣的時候:

where REPORT_TIMESTAMP BETWEEN '2016-08-11 20:59:00' AND '2016-08-11 20:59:01' 

的時間是恆定的,但日期總是指向昨日,這就是爲什麼我使用的第一個查詢。無論如何混合兩者?

+0

所以,你要日期是昨天和時間正好二十時59分00秒和20時59分01秒之間?我的理解正確嗎? – Plirkee

+0

是的,這是正確的。 – Sam

回答

1

昨天的日期,時間20:59:00到20:59:01之間的時間戳。使用

功能:to_timestampto_charsysdate

where REPORT_TIMESTAMP BETWEEN 

TO_TIMESTAMP (to_char(sysdate-1,'DD-Mon-RR') || ' 20:59:00', 'DD-Mon-RR HH24:MI:SS') 

and 

TO_TIMESTAMP (to_char(sysdate-1,'DD-Mon-RR') || ' 20:59:01', 'DD-Mon-RR HH24:MI:SS') 
+0

你能解釋一下你的代碼嗎? – Sam

+0

@Sam to_timestap函數根據字符輸入和格式返回時間戳。輸入字符串的時間部分是常量'20:59:00'或'20:59:01'。要將昨天的日期生成爲char我使用的(sysdate-1),然後使用給定的格式將其轉換爲字符串 - 使用to_char函數。 – Plirkee