问题描述:
使用jetbrain的DataGrip访问clickhouse的datatime类型数据的时候,时间会-8小时
环境描述:使用docker 启动的clickhouse,clickhouse 版本为:21.1.2.15
尝试解决方法:
1. docker配置文件中指定时区:
具体文件为:/root/clickhouse/conf/config.xml
<timezone>Asia/Shanghai</timezone>
但是不生效,查询出来的数据还是需要 +8 小时
2. 修改docker容器时区信息
参考文章:date格式数据导入表中,时间发生+8时区变化,修改容器的环境变量:
# 进入容器
docker exec -it clickhouse-server /bin/bash
# 查看 TZ,返回结果为UTC
echo $TZ
# 修改 TZ 的值为:Asia/Shanghai
export TZ='Asia/Shanghai'
source ~/.bashrc
# 但是这种方式重启不生效,重启docker容器后,时区还是 UTC,可以通过创建并运行容器,通过 -e TZ="Asia/Shanghai" 设置时区
docker run -d
--name clickhouse-server
--ulimit nofile=262144:262144
-p 8123:8123 -p 9000:9000 -p 9009:9009
-e TZ="Asia/Shanghai"
-v /Users/xx/tmp/docker-volume/clickhouse:/var/lib/clickhouse
-v /Users/xx/tmp/docker-volume/clickhouse/config.xml:/etc/clickhouse-server/config.xml
yandex/clickhouse-server
# 删除老的容器,使用上述脚本重启容器,查看 $TZ,已经变成
Asia/Shanghai
# 但是从ck中查看效果,还是未生效
select Now();
3. 修改Jetbrain DataGrip的clickhouse连接配置
发现直接通过 clickhouse-clinet 执行查询发现日期数据是对的,但是从 jetbrain的 dataGrip 中查询的时间不对,应该是jetbrain的对时间做特殊处理了。参考文章 DATAgrip连接clickhouse时区显示异常解决解决。
注意:use_time_zone 的参数值为:Shanghai
不要写成 Asia/Shanghai
。执行 select now();
命令,查看结果正确。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。