Oracle to_date返回不正确的结果

时间:2018-11-13 17:03:55

标签: oracle11g to-date

我有一个表4列-代码,状态,有效日期(EFF_DT),结束日期(END_DT)。所有列均为Varchar2类型。 EFF_DT和END_DT具有ISO格式日期(YYYY-MM-DD),其中几行具有NULL值。需要获取END_DT比今天的日期大的行。 执行以下查询时,它将返回END_DT的所有Not NULL行。完全不要比较END_DT。

select code, status, EFF_DT, END_DT 
from (
  select CODE, EFF_DT, Status,to_date("END_DT" ,'YYYY-MM-DD' ) as END_DT 
  from xxx.ZZZ 
) TAB 
where to_date(TAB.END_DT ,'DD-MM-YY' ) >  to_date(CAST(CURRENT_TIMESTAMP as Date), 'DD-MM-YY') 
ORDER BY 1 ASC

但是下面的查询比较END_DT并正确返回结果-

SELECT "TAB"."CODE"  ,  "TAB"."STATUS" AS "STATUS" , "TAB"."EFF_DT"  , "TAB"."END_DT"  
FROM xxx.ZZZ  "TAB"  
WHERE (  (to_date("TAB"."END_DT",'YYYY-MM-DD') >  to_date(CAST(CURRENT_TIMESTAMP as Date), 'YY-MM-DD'))    ) 
ORDER BY 1 ASC

第一个查询出了什么问题? 我发现END_DT的返回值有所不同。 对于第一个查询,数据如下-

enter image description here

第二次查询时,数据来了

enter image description here

0 个答案:

没有答案