kettel查询到的时间比真实时间快了13~14小时,
连接的数据库是同一个,两台电脑上同一版本的kettel,同样的读取sql,但是一台不行。
首先,需要确认两台电脑的时区设置是否一致。如果不一致,需要将时区设置成相同的,并重启Kettle软件。如果时区设置一致,需要使用Kettle的内置函数来将查询结果中的时间做相应的调整。
具体来说,我们可以使用Kettle的函数“DateDiff”来计算当前电脑的时间与数据库存储的时间差,并将此差值作为参数传入“AddDate”函数中,将时间做相应的调整。假设我们需要将查询结果的时间按照GMT+8时区进行调整,可以按照下列代码进行操作:
datetime
, INTERVAL TIMESTAMPDIFF(SECOND, NOW(), UTC_TIMESTAMP) + 28800 SECOND) as datetime
FROM your_table_name
其中,28800秒是GMT+8时区与UTC时区之间的差值,可以根据需要做相应的调整。如果以上方法仍然不能解决问题,可能是数据库存储的时间格式与Kettle的默认时间格式不一致造成的,此时可以使用Kettle的转换步骤(Select values)来显式地指定时间格式,并将查询结果中的时间进行相应的转换。具体操作如下:
datetime
, '%Y-%m-%d %H:%i:%s') as datetime
FROM your_table_name
其中,%Y-%m-%d %H:%i:%s是指定的时间格式,可以根据需要做相应的调整。datetime
, INTERVAL TIMESTAMPDIFF(SECOND, NOW(), UTC_TIMESTAMP) + 28800 SECOND)如果以上方法仍然不能解决问题,可能是Kettle本身的Bug或者配置问题造成的,此时建议升级到最新版本的Kettle,并检查Kettle的时区配置是否正确。如果以上方法仍然不能解决问题,建议咨询Kettle官方技术支持。