kettel时间不准确

kettel查询到的时间比真实时间快了13~14小时,
连接的数据库是同一个,两台电脑上同一版本的kettel,同样的读取sql,但是一台不行。

img

img

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    首先,需要确认两台电脑的时区设置是否一致。如果不一致,需要将时区设置成相同的,并重启Kettle软件。如果时区设置一致,需要使用Kettle的内置函数来将查询结果中的时间做相应的调整。

    具体来说,我们可以使用Kettle的函数“DateDiff”来计算当前电脑的时间与数据库存储的时间差,并将此差值作为参数传入“AddDate”函数中,将时间做相应的调整。假设我们需要将查询结果的时间按照GMT+8时区进行调整,可以按照下列代码进行操作:

    1. 打开Kettle中的查询步骤(Table input)
    2. 在查询中加入如下代码: SELECT DATE_ADD(datetime, INTERVAL TIMESTAMPDIFF(SECOND, NOW(), UTC_TIMESTAMP) + 28800 SECOND) as datetime FROM your_table_name 其中,28800秒是GMT+8时区与UTC时区之间的差值,可以根据需要做相应的调整。
    3. 执行查询并查看结果,在新的查询结果中,时间应该已经按照新的时区进行了调整。

    如果以上方法仍然不能解决问题,可能是数据库存储的时间格式与Kettle的默认时间格式不一致造成的,此时可以使用Kettle的转换步骤(Select values)来显式地指定时间格式,并将查询结果中的时间进行相应的转换。具体操作如下:

    1. 打开Kettle中的查询步骤(Table input)
    2. 将查询转换为如下代码: SELECT DATE_FORMAT(datetime, '%Y-%m-%d %H:%i:%s') as datetime FROM your_table_name 其中,%Y-%m-%d %H:%i:%s是指定的时间格式,可以根据需要做相应的调整。
    3. 添加一个转换步骤(Select values)并配置如下两个字段:
    4. 新字段名:datetime_adjusted 表达式:DATE_ADD(datetime, INTERVAL TIMESTAMPDIFF(SECOND, NOW(), UTC_TIMESTAMP) + 28800 SECOND)
    5. 删除字段:datetime
    6. 执行查询并查看结果,在新的查询结果中,时间应该已经按照新的时区进行了调整。

    如果以上方法仍然不能解决问题,可能是Kettle本身的Bug或者配置问题造成的,此时建议升级到最新版本的Kettle,并检查Kettle的时区配置是否正确。如果以上方法仍然不能解决问题,建议咨询Kettle官方技术支持。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^