ORA-01861:literal与minus查询中的格式字符串不匹配

时间:2016-06-29 05:07:02

标签: sql oracle

我尝试执行以下查询:

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

问题是什么?

2 个答案:

答案 0 :(得分:0)

使用以下查询。让我知道它是否提供了正确的输出

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;

答案 1 :(得分:0)

查看您的示例数据,您的nvarchar列似乎包含以下格式的日期数据(YYYY-MM-DD hh24:mi:ss)。

以下查询适用于我。

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;