JDBC将Timestamp转换为NULL(zeroDateTimeBehavior问题)

我正在使用Pentaho数据集成(表输入步骤)从MySQL服务器中提取数据。 一些字段属于’Timestamp’类型,Pentaho因为时间戳为NULL(00:00:00.000000)而不断喷出错误。

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

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

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

建议?

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