dbeaver 查询clickhouse,数据库时间差了8小时
🛠️ 调整步骤
- 修改 DBeaver 连接配置
- 在 DBeaver 中右键点击 ClickHouse 连接,选择 “编辑连接”。
- 切换到 “驱动属性” 选项卡,找到以下参数并修改:
use_server_time_zone
:设置为true
(强制使用服务器时区)。use_server_time_zone_for_dates
:设置为true
(日期字段同步服务器时区)。use_time_zone
:设置为目标时区(例如Asia/Shanghai
或Shanghai
)。
- 保存设置,断开连接后重新连接。
- 验证服务器时区
- 在 ClickHouse 服务器执行
SELECT timezone()
,确认时区是否为预期值(如Asia/Shanghai
)。 - 若服务端时区错误:
- 修改配置文件
/etc/clickhouse-server/config.xml
,取消注释<timezone>
并设置为正确时区(如<timezone>Asia/Shanghai</timezone>
)。 - 重启 ClickHouse 服务:
sudo service clickhouse-server restart
。
- 检查客户端工具时区覆盖
- 若使用其他客户端(如 DataGrip),需在连接高级设置中显式指定:
use_time_zone = UTC+8
use_server_time_zone = false
(避免双重时区转换)。
⚠️ 注意事项
- 数据存储原理:ClickHouse 内部始终以 UTC 时间存储
DateTime
字段。时区设置仅影响查询结果的显示,不会修改底层数据。 - 导入导出数据: 使用
clickhouse-client
导出 CSV 时,需通过--use_client_time_zone
指定时区,避免导入时因时区差异导致时间偏移。
🔄 操作后验证
执行 SELECT NOW()
或查询业务表的时间字段,确认显示时间与本地时间一致。若仍偏差,检查操作系统时区(timedatectl
)是否与 ClickHouse 服务端一致。
通过上述调整,99% 的时区偏差问题可解决。若问题持续,可结合服务器日志与客户端配置进一步排查。