2012-05-09 75 views
0

我有一個名爲Evrak的表,它有兩列Product_Date [timestamp(6)]和Evrak_Name [varchar2(50)]。有一個名爲Evrak Test和Product_Date的記錄是
25-APR-12 12.00.00.000000000 PM。Oracle 11g - 使用TimeStamp的Sql

當我想運行一個查詢,如;

select * from Evrak Where Evrak.Product_Date = TO_TIMESTAMP ('25.04.2012:00:00:00','DD.MM.YYYY:HH24:MI:SS') 

它不會返回一個空的記錄,我已經試圖改變格式類型,並已使用TO_DATE,TO_CHAR方法,但並沒有設法拿到了紀錄。我在這裏錯過了什麼?或者在查詢時間戳列時是否有特殊用法?

回答

2

嘗試:

select * 
from Evrak 
Where Evrak.Product_Date = TO_TIMESTAMP ('25.04.2012:12:00:00','DD.MM.YYYY:HH24:MI:SS') 

既然你想25-APR-12 12.00.00.000000000 PM而不是25-APR-12 12.00.00.000000000 AM

+0

啊,是的,這是問題的根源,謝謝。 –

0

時間戳是finicky。像浮點數一樣,可能會有影響比較的微不足道的位。

我會建議返回一定範圍內的東西。例如,以下查詢在一秒內返回時間戳。

select * 
from Evrak 
Where abs(Evrak.Product_Date - TO_TIMESTAMP ('25.04.2012:00:00:00', 'DD.MM.YYYY:HH24:MI:SS')) < 1.0/(24*60*60) 
+0

範圍和精度不是問題。這是要求錯誤的時間。請參閱A B Cade的答案。 –