【问题标题】:JDBC converting Timestamp to NULL (zeroDateTimeBehavior issue)JDBC 将 Timestamp 转换为 NULL(zeroDateTimeBehavior 问题)
【发布时间】:2014-05-06 23:23:28
【问题描述】:

我正在使用 Pentaho 数据集成(表格输入步骤)从 MySQL 服务器中提取数据。有几个字段是“时间戳”类型的,由于时间戳为 NULL (0000-00-00 00:00:00.000000),Pentaho 不断出现错误。

我在参数中添加了一个zeroDateTimeBehavior=convertToNull,它应该处理错误的时间戳,但它会将我的时间戳数据的所有转换为 NULL。

我认为它可能发生的一个原因是因为我的一些“好”数据表示为例如 2013-03-14 04:55:09.000000。虽然大部分日期是“好数据”,但小数秒 (.000000) 可能会被 zeroDateTimeBehavior 参数解释为“坏”数据,因此被转换为 NULL。

我不确定这是否是它发生的原因,但有人可以给我一些关于其他可能原因的见解,以及我该如何阻止这种情况?也许转换为字符串可能是个好主意,但我不知道如何去做。

建议?

【问题讨论】:

    标签: java mysql jdbc pentaho


    【解决方案1】:

    根据this 的回答,我可能会将字段的数据类型更改为datetime 而不是timestamp。如果不这样做,则必须在读取数据的 SQL 中进行转换。上一个答案给出了如何做到这一点的示例。

    【讨论】:

    • 如何在 SQL 中进行转换?我可以使用 CONVERT 功能吗?
    • 查看链接中的示例。他们在那里进行了一些转换。另请参阅docs。您可能想要使用 FROM_UNIXTIME 函数,但您可能需要重新格式化。有关更多示例,请参阅this 答案。对不起,我不是 MySQL 人。你必须玩一会儿,或者问一个单独的问题。
    猜你喜欢
    • 2017-05-30
    • 2020-12-03
    • 2020-12-15
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 2022-12-14
    相关资源
    最近更新 更多