kettel查询到的时间比真实时间快了13~14小时,
连接的数据库是同一个,两台电脑上同一版本的kettel,同样的读取sql,但是一台不行。
kettel时间不准确
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注 不知道你这个问题是否已经解决, 如果还没有解决的话:- 以下回答来自chatgpt:
首先,需要确认两台电脑的时区设置是否一致。如果不一致,需要将时区设置成相同的,并重启Kettle软件。如果时区设置一致,需要使用Kettle的内置函数来将查询结果中的时间做相应的调整。
具体来说,我们可以使用Kettle的函数“DateDiff”来计算当前电脑的时间与数据库存储的时间差,并将此差值作为参数传入“AddDate”函数中,将时间做相应的调整。假设我们需要将查询结果的时间按照GMT+8时区进行调整,可以按照下列代码进行操作:
- 打开Kettle中的查询步骤(Table input)
- 在查询中加入如下代码:
SELECT DATE_ADD(
datetime
, INTERVAL TIMESTAMPDIFF(SECOND, NOW(), UTC_TIMESTAMP) + 28800 SECOND) asdatetime
FROMyour_table_name
其中,28800秒是GMT+8时区与UTC时区之间的差值,可以根据需要做相应的调整。 - 执行查询并查看结果,在新的查询结果中,时间应该已经按照新的时区进行了调整。
如果以上方法仍然不能解决问题,可能是数据库存储的时间格式与Kettle的默认时间格式不一致造成的,此时可以使用Kettle的转换步骤(Select values)来显式地指定时间格式,并将查询结果中的时间进行相应的转换。具体操作如下:
- 打开Kettle中的查询步骤(Table input)
- 将查询转换为如下代码:
SELECT DATE_FORMAT(
datetime
, '%Y-%m-%d %H:%i:%s') asdatetime
FROMyour_table_name
其中,%Y-%m-%d %H:%i:%s是指定的时间格式,可以根据需要做相应的调整。 - 添加一个转换步骤(Select values)并配置如下两个字段:
- 新字段名:datetime_adjusted
表达式:DATE_ADD(
datetime
, INTERVAL TIMESTAMPDIFF(SECOND, NOW(), UTC_TIMESTAMP) + 28800 SECOND) - 删除字段:datetime
- 执行查询并查看结果,在新的查询结果中,时间应该已经按照新的时区进行了调整。
如果以上方法仍然不能解决问题,可能是Kettle本身的Bug或者配置问题造成的,此时建议升级到最新版本的Kettle,并检查Kettle的时区配置是否正确。如果以上方法仍然不能解决问题,建议咨询Kettle官方技术支持。
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报- 以下回答来自chatgpt:
悬赏问题
- ¥15 matlab不知道怎么改,求解答!!
- ¥15 永磁直线电机的电流环pi调不出来
- ¥15 用stata实现聚类的代码
- ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
- ¥20 docker里部署springboot项目,访问不到扬声器
- ¥15 netty整合springboot之后自动重连失效
- ¥15 悬赏!微信开发者工具报错,求帮改
- ¥20 wireshark抓不到vlan
- ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
- ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持