如何修改Neo4j时区?将默认时区从UTC改为其他时区的方法
修改Neo4j默认时区的解决方案
我来帮你搞定这个Neo4j时区的问题~要把默认UTC改成其他时区,主要有全局配置(永久生效)和查询时临时指定(按需调整)两种方式,下面一步步说清楚:
一、全局修改默认时区(永久生效)
这是最彻底的方式,修改后整个Neo4j实例都会使用你指定的时区:
- 找到Neo4j的配置文件
neo4j.conf:如果是安装版,它在安装目录的conf文件夹下;如果是桌面版,在对应项目的「设置」里就能找到配置文件的入口。 - 搜索
dbms.timezone配置项:默认它是被注释掉的(前面带#),取消注释后设置为你需要的IANA时区标识符,比如:
常见的合法时区比如dbms.timezone=Asia/ShanghaiEurope/London、America/New_York,建议用这种IANA格式,它会自动处理夏令时等时间规则,比GMT+8这种偏移量更靠谱。 - 保存配置文件后,必须重启Neo4j服务,新的时区设置才会生效。
- 验证是否生效:执行这条Cypher语句
返回的时间应该和你设置的时区一致;再试你之前的APOC语句RETURN datetime()RETURN apoc.date.format(timestamp(),'ms', 'yyyy/MM/dd HH/mm/ss'),现在也会返回对应时区的时间了。
二、查询时临时指定时区(无需改配置)
如果你不想改动全局配置,只是个别查询需要特定时区的结果,可以直接在APOC的date.format函数里添加时区参数:
RETURN apoc.date.format(timestamp(), 'ms', 'yyyy/MM/dd HH:mm:ss', 'Asia/Shanghai')
最后一个参数就是你要指定的时区,这样即使全局是UTC,这个查询也会返回对应时区的时间。
针对旧版本Neo4j的注意事项
如果你用的是Neo4j 3.x或更早的版本,dbms.timezone这个配置项还不存在,需要通过修改JVM时区来实现:
在neo4j.conf里添加一行:
dbms.jvm.additional=-Duser.timezone=Asia/Shanghai
保存后重启服务,就能把JVM的时区改成你需要的,Neo4j也会跟着使用这个时区。
内容的提问来源于stack exchange,提问作者Rudresh Kumar Chaudhary
相关产品推荐
相关产品推荐

