2016-06-29 7 views
0

にフォーマット文字列と一致していない私は、次のクエリを実行しようとした:ORA-01861:リテラルがマイナスクエリ

select to_date(SUBJ_VST_FRM_VST_DT,'dd-MON-YY') 
from SMARTTRIAL_ODR_LANDING.RAVE_LND_SUBJ_VST_FRM 
minus 
select SUBJ_VST_FRM_VST_DT 
from SMARTTRIAL_ODR_STAGE.LS_STG_SUBJ_VST_FRM; 

をが、次のエラーが返されます。ORA-01861: literal does not match format string

問題は何だろうか?

+0

SUBJ_VST_FRM_VST_DT列のデータ型は?マイナスの場合、select文ではデータ型は同じでなければなりません。ソーステーブルで –

+0

すなわちSMARTTRIAL_ODR_LANDING.RAVE_LND_SUBJ_VST_FRMそのNVARCHAR2およびターゲット表にすなわちその日 –

+0

あなたが他のために行っているのと同じ形式でもLS_STG_SUBJ_VST_FRMテーブルから日付カラムSMARTTRIAL_ODR_STAGE.LS_STG_SUBJ_VST_FRMを変換しSMARTTRIAL_ODR_STAGE.LS_STG_SUBJ_VST_FRM。正しい構文はto_date(SUBJ_VST_FRM_VST_DT、DD-MON-YYYY)です。 –

答えて

0

以下のクエリを使用してください。 (:MI:SS YYYY-MM-DDのHH24)私は、それはあなたのサンプルデータを見ると、正しい出力に

select NVL(to_date(SUBJ_VST_FRM_VST_DT,'DD-MON-YY') ,SYSDATE) 
from SMARTTRIAL_ODR_LANDING.RAVE_LND_SUBJ_VST_FRM 
minus 
select to_date(NVL(SUBJ_VST_FRM_VST_DT,SYSDATE),'DD-MON-YY') 
from SMARTTRIAL_ODR_STAGE.LS_STG_SUBJ_VST_FRM; 
+0

です。このソリューションを試しました。それでも同じエラーが発生します。これは、列にいくつかのヌル値があるためですか? –

+0

SUBJ_VST_FRM_VST_DT列に格納されているvarchar値のタイプは何ですか? "DD-MON-YYYY"と同じフォーマットを使用していますか?nvlを使用してNULLをSYSDATEに変換することもできます –

+0

列内のデータは変更できません –

0

を与えた場合、あなたのnvarchar型の列には、次の形式で日付データが含まれているものと思わお知らせください。

次のクエリは私のために働きます。

SELECT TO_DATE('2000-01-03 00:00:00','YYYY-MM-DD hh24:mi:ss') FROM DUAL; 

私は次のクエリがうまくいくはずです。

SELECT TO_DATE(subj_vst_frm_vst_dt,'YYYY-MM-DD hh24:mi:ss') 
FROM smarttrial_odr_landing.rave_lnd_subj_vst_frm 
MINUS 
SELECT subj_vst_frm_vst_dt 
FROM smarttrial_odr_stage.ls_stg_subj_vst_frm; 

ただし、上記のクエリにはタイムスタンプも含まれます。 ls_stg_subj_vst_frmテーブルの列subj_vst_frm_vst_dtにタイムスタンプが含まれていない場合や、タイムスタンプを比較したくない場合は、次のクエリを試すことができます。

SELECT TRUNC(TO_DATE(subj_vst_frm_vst_dt,'YYYY-MM-DD hh24:mi:ss')) 
FROM smarttrial_odr_landing.rave_lnd_subj_vst_frm 
MINUS 
SELECT TRUNC(subj_vst_frm_vst_dt) 
FROM smarttrial_odr_stage.ls_stg_subj_vst_frm;