2016-09-30 35 views
-3

記錄我在我的表在下面的格式CREATE_DATE列時間戳。如何搜索之間的特定CREATE_DATE範圍

9/8/2016 5:37:35 AM 

我需要搜索特定CREATE_DATE範圍之間的記錄。請幫助我如何做到這一點。

我用下面的查詢,但得到 ORA-01843:不是有效的月份

select * 
from gdf.msg_pyld 
where dbms_lob.instr(pyld_clob,'4861615654')>=1 
and CREATE_DATE BETWEEN '09/08/2016 5:59:17 AM' AND '09/08/2016 5:59:17 PM'; 
+0

什麼是CREATE_DATE列的數據類型?它是一個合適的Oracle「日期」,還是一個字符串(VARCHAR2)? – mathguy

+0

CREATE_DATE列的DATA_TYPE是'DATE' –

+0

9/8/2016是指「2016年9月8日」還是「2016年8月9日」?也就是說,你的字符串格式是MM/DD/YYYY還是DD/MM/YYYY? –

回答

2

你嘗試過什麼是最新的針對STRINGS的比較(數字類型具有非常特殊的意義)。這將無法工作。

如果CREATE_DATE的確是Oracle中的日期,然後這應該工作:

... AND CREATE_DATE BETWEEN to_date('09/08/2016 5:59:17 AM', 'mm/dd/yyyy hh:mi:ss AM') 
         AND to_date('09/08/2016 5:59:17 PM', 'mm/dd/yyyy hh:mi:ss PM') 

假設09/08意味着9月8日;如果相反它應該是8月9日,那麼在格式模型中將mm/dd更改爲dd/mm。祝你好運!