2013-10-10 2 views
-1

У меня есть таблица в оракуле, где хранятся данные перфорации. Столбец «punchtime» имеет данные как varchar2 и время сохраняется (например, 20:30:00). когда я хочу сортировать данные по punchtime Я использую этот запросПреобразование во времени в Oracle

select * from punch order by to_date(punchtime,'hh24:mi:ss') 

Это работает отлично. Но ниже запрос не работает

select * from punch where punchtime = to_date('01:00:00','hh24:mi:ss') 

Это показывает «не действительный месяц»

Может кто-нибудь, пожалуйста, помогите мне. Я должен запросить этот столбец.

ответ

1

Как потому, что punchtime является колонкой varchar2 типа данных, Вы должны запросить:

select * from punch where to_date(punchtime,'hh24:mi:ss') = to_date('01:00:00','hh24:mi:ss') 
+0

Спасибо вам столько – Shanna

+0

Да; но для одного значения, почему бы просто не сравнить два строковых значения напрямую, а не преобразовывать их в даты? Даже для диапазона они могут сравниваться как строки, так как порядок varchar2 будет таким же, как и порядок даты (времени) в этом случае (во всех локалях, насколько мне известно). –

+0

Спасибо, да .. вместо этого это можно сделать напрямую, но это было бы ключевым решателем для его ошибки atleast :) – ajmalmhd04

Смежные вопросы