我有一个表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的返回值有所不同。 对于第一个查询,数据如下-
第二次查询时,数据来了