clickhouse获取当前时间

时间:2024-03-28 16:58:57

1 起因

今天使用idea连接clickhouse的时候想获取当前时间发现和现在时间差8个小时,select now(),这是怎么回事呢

clickhouse获取当前时间

2 经过

1 怀疑是不是时区不对,于是查询资料发现clickhouse默认时区是<timezone>Europe/Moscow</timezone>,这个时区不对,于是修改config.xml,把时区修改为<timezone>Asia/Shanghai</timezone>,重启clickhouse服务,再select now(),结果还是不对,还是差8个小时
2 是不是服务器时区不对呢,通过timedatectl名称查看,发现系统时区为上海,也没有问题

clickhouse获取当前时间

3 继续研究,发现使用debaver访问clickhouse则没有这个问题,这说明是工具不同引起的问题,可能工具默认配置什么的
4 那idea集成的访问clickhouse的工具是有啥问题呢,继续查阅资料发现,idea集成的是DataGrip,该工具用于访问各种数据库,新版的也支持了clickhouse的访问,关于时区方面,默认采用的是世界标准时间,所以得改,
1) 修改了clickhouse连接高级选项,VM Options 填入值:-Duser.timezone=Asia/Shanghai,重开连接,

clickhouse获取当前时间


结果还是老样子,这是咋回事?继续找其他方法
2)尝试advanced高级选项这块改一改,拉到最后,发现有关于时区的配置,use_time_zone = UTC+8,同时use_server_time_zone改为false
默认值是true,思考:理论上来讲使用服务器的时区应该是可以正确查询当前时间的,但是实际却是差8小时
,改掉时区后,重新开连接,可以正确显示当前时间了

clickhouse获取当前时间

3 结果

idea访问clickhouse的话,需要配置连接高级选项,设置use_time_zone = UTC+8,use_server_time_zone=false应用即可