(本文档仅供参考)
现象:
基于原生SQL数据集创建自助数据集,在自助数据集中增加计算字段,使用getdate()获取当前日期,使用day()获取当前日期的日。
在时间为2023年7月8日00:28时,day(getdate())取值为7,getdate()取值时2023-07-08。day取值有误。
原因:
自助数据集中的时间日期函数,实质SQL会生成数据库的相关函数执行查询,因此从业务数据库层面进行排查数据库时间、时区等情况。
由于原生SQL数据集创建的自助数据集,系统会先将数据集抽取至高速缓存库中再进行查询,此时从【系统监控】-》【SQL/MDX监控】中可以定位出,执行时间日期函数的业务数据库为高速缓存库。
此时从上述现象可知,数据库时间与实际时间一致。从网上资源了解,高速缓存库时区默认为Europe/ Moscow,因此需要修改高速缓存库时区设置。
解决方案:
1、修改高速缓存库时区配置具体操作如下:
1.修改设置 sudo vim /etc/clickhouse-server/config.xml <timezone>Asia/Shanghai</timezone> 由于clickhouse是俄罗斯人主导开发的,默认设置为Europe/Moscow 2.重启服务器: sudo service clickhouse-server restart
2、修改高速缓存库配置文件后需重启高速缓存库后生效:
3、修改完毕后,建议在数据集中进行查询,确认是否修改成功。
SELECT timezone() AS server_timezone