oracle11g - Oracle 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 的返回值有所不同。对于第一个查询,数据就像 -
而对于第二个查询,数据就像
解决方案
推荐阅读
- c++ - 有没有办法将字符串字符转换为整数?
- laravel - Laravel l 升级 6 到 7
- python - 我的棋盘验证程序有效,但结果不正确
- javascript - jQuery图像滑块故障
- html - 为什么 .LogIn 类具有我不能的 margin-top ,将其更改为更小的尺寸?
- yaml - Jekyll YAML 数组中的动态列表
- swift - 如何将 Twitter 弹跳动画插入标签栏
- c++ - 这个函数 foo.getSize().x 是如何实现的
- php - 由于提供的服务导致的捆绑问题
- c# - 使用 MIP SDK 从 MS 365 个人帐户中解密加密的 Office 365 电子邮件