如何解决AS400 DB2 SQL-0181 日期、时间或时间戳中的值无效
我正在使用使用 jt400 10.5 jar 查询 DB2 数据库的 Grails 应用程序。我们有一个 SQL 语句,可以将儒略日期 YYYYDDD 转换为公历日期以显示在网站上。但是,我们最近有一个日期,并且似乎是任何大于 2040001 的日期都提供了此错误跟踪。
我正在执行的 SQL 是这样的,其中 DELAPPT 是儒略日期。
date(to_date(VARCHAR_FORMAT(DATE(TIMESTAMP_FORMAT(CHAR(DELAPPT),'YYYYDDD')),'MM/DD/YYYY'),'MM/DD/YYYY'))
end as "delAppt"
Caused by: java.sql.SQLException: [SQL0181] Value in date,time,or timestamp string not valid.
at
此语句在查询 DB2 的 IBM ACS Run SQL Scripts 应用程序中适用于这些日期,但通过 JT400,当日期达到 2040001 及更大时,它似乎抛出此错误。我已经尝试了几种不同的方法在诸如 date(digits(DELAPPT)) 之类的语句中执行此转换,但我仍然遇到同样的错误。有什么想法吗?
解决方法
2040 年是这里的危险信号...
确保您拥有 JDBC connection configured 到 ISO 格式(或其他 4 位数年份)的日期。
ACS 也使用 JT400,因为 ACS 可以工作,所以您已经在那里使用了 4 位年份格式。但如果您将其更改为 2 位数年份,您将能够重现该错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。