2016-09-30 4 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

2011年9月8日は「2016年9月8日」または「2016年8月9日」を意味しますか?つまり、文字列はMM/DD/YYYYまたはDD/MM/YYYYの形式ですか? –

答えて

2

何をしようとしたことSTRINGSに対する日付(非常に特別な意味を持つ数値型)の比較です。これは決してうまくいかないでしょう。

CREATE_DATEが実際のOracleの日付である場合、これは動作するはずです:9月8日を想定し

... 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') 

は9月8日を意味します。代わりに8月9日を意味すると仮定した場合、フォーマットモデルでmm/ddをdd/mmに変更します。がんばろう!

関連する問題