Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在DB2中转换之前验证日期值_Sql_Db2 - Fatal编程技术网

Sql 在DB2中转换之前验证日期值

Sql 在DB2中转换之前验证日期值,sql,db2,Sql,Db2,在DB2表中,日期存储为压缩字段。我可以将这些字段转换为有效的DB2日期字段,但有时源代码包含无效的日期值,如20130431—仅在4月份的30天。我知道,当提供给date函数的date无效时,返回的SQLCODE是 -我是否必须编写一个函数来检查SQLCODE以进行验证,还是可以在CASE语句中执行某些操作 我可以想象一个非常丑陋的嵌套/复合CASE结构的前几层,它将数值转换为CHAR,并可能使用LAST_DAY()和年和月子字符串来获得一个日数,以与低阶字符进行比较,检查月份数字以确保范围为

在DB2表中,日期存储为压缩字段。我可以将这些字段转换为有效的DB2日期字段,但有时源代码包含无效的日期值,如20130431—仅在4月份的30天。我知道,当提供给date函数的date无效时,返回的SQLCODE是
-我是否必须编写一个函数来检查SQLCODE以进行验证,还是可以在CASE语句中执行某些操作

我可以想象一个非常丑陋的嵌套/复合
CASE
结构的前几层,它将数值转换为
CHAR
,并可能使用
LAST_DAY()
和年和月子字符串来获得一个日数,以与低阶字符进行比较,检查月份数字以确保范围为“01”至“12”后。当深度达到这一程度时,UDF将证明其价值。问题的出现主要是因为SQL首先不允许将无效日期写入
date
列;它不希望读取无效值。我确信您是正确的,但是,正如我所说的,这些值定义为压缩十进制,而不是日期。我在下面放置了一个可能类似的函数。可能很容易调整十进制值的结构