Сравнить два раза в oracle

#oracle #date-arithmetic

#Oracle #дата-арифметика

Вопрос:

В Oracle :

В моей таблице есть столбец с меткой времени со значением времени «02-11 НОЯБРЯ 12.00.00.000000000 УТРА» .

Я попытался сравнить две даты:

 select id from table1 where mytime = '02-NOV-11'
 

Но он не возвращает записей. Почему?

Спасибо!!!

Комментарии:

1. Для меня это работает нормально. Какой у вас установлен формат даты по умолчанию? т. е. Какой результат вы видите select sysdate from dual ?

Ответ №1:

Я подозреваю, что проблема может быть в формате даты по умолчанию, поскольку запрос у меня работает нормально. Не рекомендуется писать запросы, которые сравнивают даты со строками, поскольку для этого требуется, чтобы Oracle форматировала строку в дату, используя формат по умолчанию, который может быть не таким, как вы ожидаете. Лучше использовать литералы даты ANSI, подобные этому:

 select id from table1 where mytime = date '2011-11-02';
 

Литералы даты ANSI должны быть в формате date 'yyyy-mm-dd' , поэтому нет никакой двусмысленности в отношении формата.

Ссылка для литералов даты и времени

Комментарии:

1. Вероятно, вы заметили это правильно. Кроме того, select * from sys.v_$nls_parameters может что-то сказать.