дата и время поиска в оракуле с помощью to_char

В оракуле, когда я ищу, используя приведенный ниже запрос, он получает неправильные записи (проверьте прикрепленный снимок экрана), может ли кто-нибудь предложить правильный формат для 12-часового времени.

to_char(a.created, 'MM/DD/YYYY HH12:MI:SS') >='05/23/2012 12:00:00'

Спасибо, Киран.введите здесь описание изображения


person Kiranshell    schedule 18.09.2012    source источник


Ответы (1)


Не выполняйте поиск по строке. Поиск по дате. Если вы выполняете поиск по строке, вы получите семантику сравнения строк, которая вам не нужна. Строка «01.06.1900» в алфавитном порядке следует за строкой «23.05.2012», несмотря на то, что дата, которую она представляет, намного раньше.

a.created >= to_date('05/23/2012 12:00:00', 'mm/dd/yyyy hh24:mi:ss' )

или используя 12-часовой формат времени

a.created >= to_date('05/23/2012 03:15:00 pm', 'mm/dd/yyyy hh:mi:ss am' )
person Justin Cave    schedule 18.09.2012
comment
спасибо Джастин, но как мне найти ›=23/05/2012 15:15:00 - person Kiranshell; 18.09.2012
comment
@Kiranshell, Джастин привел вам пример, основанный на указанной вами дате/времени. Если вы хотите изменить его на другое время, просто измените его. В примере Джастина используются 24-часовые часы, поэтому вы должны использовать '05/23/2012 15:15:00'. - person Jeffrey Kemp; 18.09.2012
comment
@Джеффри Кемп, это не работает с «23.05.2012 15:15:00», оно выдает ORA-01849: час должен быть между 1 и 12. Второе решение Джастина работает отлично. - person Kiranshell; 18.09.2012
comment
@Kiranshell, да, конечно, это не сработает, если вы поставите 15, когда в вашем часовом формате указано 12-часовое время (HH12). В исходном примере Джастина, на который я ссылался, использовались 24-часовые часы (HH24). - person Jeffrey Kemp; 18.09.2012