2012-05-09 7 views
0

私はEvrakという名前のテーブルを持っていて、Product_Date [timestamp(6)]とEvrak_Name [varchar2(50)]という2つのカラムを持っています。 Evrak TestとProduct_Dateという名前のレコードがあります。
25-APR-12 12.00.00.000000000 PMです。Oracle 11g - Sql with TimeStamp

私は次のようなクエリを実行したい。

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

はそれがヌルレコードを返さない、私は、フォーマットの種類を変更しようとした」VEのと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

タイムスタンプは厄介です。浮動小数点数のように、比較に影響を与える重要でないビットがあるかもしれません。

範囲内で返品することをお勧めします。たとえば、次のクエリは1秒以内にタイムスタンプを返します。

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の答えを参照してください。 –