#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
может что-то сказать.