Talend 无法将列解析为时间戳

Talend could not parse column as timestamp

在这个问题上我需要你的帮助,

我有一个 talend 作业,它使用简单的 tmap 将数据从 table 加载到另一个。

我称它为神秘错误,因为它只发生在特定的日期时间

java.sql.SQLException: Could not parse column as timestamp, was: "2009-06-01 00:00:00"    

包含此行的行之前的数千行不会生成错误

当我将此日期 2009-06-01 00:00:00 修改为另一个日期或只是更改日期部分或月份甚至小时时,它会 没有错误。

数据源是 mariadb,目标是 Mysql 数据库

感谢您的帮助

这是包含生成的错误的代码部分

                    if (colQtyInRs_tMysqlInput_5 < 6) {
                        row5.created_at = null;
                    } else {

                        if (rs_tMysqlInput_5.getString(6) != null) {
                            String dateString_tMysqlInput_5 = rs_tMysqlInput_5
                                    .getString(6);
                            if (!("0000-00-00")
                                    .equals(dateString_tMysqlInput_5)
                                    && !("0000-00-00 00:00:00")
                                            .equals(dateString_tMysqlInput_5)) {
                                row5.created_at = rs_tMysqlInput_5
                                        .getTimestamp(6);
                            } else {
                                row5.created_at = (java.util.Date) year0_tMysqlInput_5
                                        .clone();
                            }
                        } else {
                            row5.created_at = null;
                        }
                    }

由于您在

中没有提供更多信息
  • 源数据的样子,例如它是源中的日期字段还是字符串字段?

  • 为什么会解析,这好像跟源数据是字符串有关

  • 解析模式的样子

我在这里假设一下。

1st:我假设您在源代码中提供了一个字符串。由于是这种情况,您需要确保列中的日期始终采用相同的格式。另外,您需要向我们展示用于解析的时间戳格式。

2nd:您说您需要更改日期值才能正常工作。在我看来,这似乎是解析的问题,例如,您不小心切换了月份和日期字段,例如yyyy-dd-mm HH:mm:ss 或类似的东西。同样,这取决于您的解析字符串。

因为经常会有一些混淆I created a blog post for date handling in Talend,你也可以参考一下。

这个错误是由于时区引起的,在尝试了很多解决方案后,我考虑更改时区,因为我的笔记本电脑是UTC,而数据库时区是UTC+01,所以Talend在本地环境中产生了这个错误。 希望对其他人有所帮助