2012-05-09 2 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 - Sql с TimeStamp

Когда я хочу запустить запрос типа;

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

Try:

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

Временные марки являются точными. Как и числа с плавающей запятой, могут быть незначительные биты, которые влияют на сравнения.

Я предлагаю вернуть вещи в пределах диапазона. Например, следующий запрос возвращает отметки времени в течение одной секунды.

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. –