在我的 ClickHouse 数据库中执行以下查询时:
SELECT formatDateTime(now(), '%Y-%m-%d %H:%M:%S', 'Asia/Tehran');
我收到了意想不到的结果:
2024-03-29 00:34:35
但是,预期输出是:
2024-03-29 23:34:35
将 ClickHouse 中的时区设置为亚洲/德黑兰时,所有日期时间值都会调整为 UTC+04:30,而不是预期的 UTC+03:30。您能否提供有关如何解决此问题的指导?
伊朗曾经遵守夏令时,但于2023年被废除。
Asia/Tehran
时区的相应更改已应用于 IANA TZ 数据,版本 2022b。
如果您在 2023 年或之后看到
+04:30
偏移,则您正在运行的系统没有更新的时区数据,因此需要更新。
如何更新时区数据取决于您如何安装ClickHouse。例如,如果您只是在自己的 Linux 计算机上运行他们的“快速安装”,那么您将运行
apt-get -y tzdata
。但是,如果您使用的是 Docker 映像,则可能需要更新 dockerfile 以包含该命令,如此处所示。
一般最佳实践是始终保持时区数据最新。否则,您将应用以前的规则而不是当前的规则,从而给出可能不正确的结果(如您所描述的)。