【问题标题】:AS400 DB2 SQL-0181 Value in date,time or timestamp not validAS400 DB2 SQL-0181 日期、时间或时间戳中的值无效
【发布时间】:2021-02-27 15:34:49
【问题描述】:

我正在使用一个使用 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)) 等语句中尝试了几种不同的方法来执行这种转换,但我仍然遇到同样的错误。有什么想法吗?

【问题讨论】:

    标签: sql grails groovy db2 ibm-midrange


    【解决方案1】:

    2040 是这里的红旗...

    确保日期的 JDBC connection configured 格式为 ISO 格式(或其他 4 位数年份)。

    ACS 也使用 JT400,因为 ACS 有效,所以您已经在使用 4 位数年份格式。但是,如果您将其更改为 2 位数年份,您将能够重现该错误。

    【讨论】:

    • 谢谢!这就是问题所在。
    • 不要忘记将答案标记为已接受。
    猜你喜欢
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    • 2013-08-07
    相关资源
    最近更新 更多