我有一个名为emp的表,其中一列是hiredate。我的雇用日期列中包含错误的日期。例如:2018年2月30日、2018年4月31日、2018年6月31日等,这意味着这些月份中不存在这些日期。如何通过sql查询找出那些错误的日期?
发布于 2018-03-11 14:03:46
在Oracle12.2及更高版本中,可以使用TO_DATE的DEFAULT .. ON CONVERSION ERROR选项轻松地实现验证
SQL> with t(hiredate)
2 AS
3 (
4 select '28-feb-2018' FROM DUAL UNION ALL
5 select '30-feb-2018' FROM DUAL UNION ALL
6 select '31-apr-2018' FROM DUAL UNION ALL
7 select '31-jun-2018' FROM DUAL
8 )
9 SELECT hiredate
,TO_DATE(hiredate DEFAULT NULL ON CONVERSION ERROR
,'DD-MON-YYYY') valid_date
FROM t;
HIREDATE VALID_DATE
----------- ---------
28-feb-2018 28-FEB-18
30-feb-2018 NULL
31-apr-2018 NULL
31-jun-2018 NULLhttps://stackoverflow.com/questions/49216453
复制相似问题