在开发环境和UAT环境中,使用同一个sql查询,开发环境中报错,而UAT环境却正常。
sql:select * from table_name where to_cahr(trans_date,'yyyy-mm') > '2016-01'
其中,trans_date是varchar型,存储的数据格式为“2016-08-01“。
在开发环境中报错信息:
SQL0180N The systax of the string representation of a datetime value is incorrect.
SQLSTATE=22007
很疑惑,两个环境的数据库环境、版本、配置都基本一致,为什么同一条sql在UAT
正常运行,在开发环境却出现问题?
已发现问题所在,数据库配置、系统环境都基本一致,问题主要是因为两个库中的数据不一致导致的。这个_to_char(dataSting,fotmat)函数支持日期型
字符串的特定格式,'yyyy-mm-dd',其他格式如'yyyy/mm/dd','yyyymmdd'则不能使用此方法。而本次问题主要症结在于,开发环境中包含了两种格
式的日期型字符串,而UAT环境中则只有'yyyy-mm-dd'这种标准格式,所以一个执行失败,一个执行成功。
在此谢谢各位热心人士