2013-10-10 30 views
-1

我在oracle'punch'中有一個表,其中存儲了打孔數據。 '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

謝謝,是的..相反,這可以直接完成,但這將是他的錯誤至關重要的解決方案:) – ajmalmhd04