Сравните два раза в оракуле - PullRequest
2 голосов
/ 02 ноября 2011

В Oracle:

В моей таблице есть столбец отметки времени со значением '02 -NOV-11 12.00.00.000000000 AM '.

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

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

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

Спасибо !!!

1 Ответ

6 голосов
/ 02 ноября 2011

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

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

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

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

...