我有一些带有日期类型值的图形数据。 我对日期类型属性的 gremlin 查询正在工作,但输出值不是日期值。
环境:
- Janusgraph 0.3.1
- GremlinPython 3.4.3
下面是我的例子:
- 数据(JanusGraph(:
{"ID": "doc_1", "MY_DATE": [Tue Jan 10 00:00:00 KST 1079]}
- 查询:
g.V().has("ID", "doc_1").valueMap("MY_DATE")
- 输出(gremlinpython(:
datetime(1079, 1, 16)
错误为 6 天 (1079.1.10 -> 1079.1.16(。 当年份高于 1600 时,不会发生这种不匹配。 时间戳在janusgraph和gremlinpython之间是否存在一些序列化/反序列化问题?
谢谢
Python 和日期存在一些问题,但我会在 3.4.3 中修复它们,这是您声明正在使用的版本。这个问题在 TINKERPOP-2264 中与修复程序一起描述,但基本上时区存在一些问题。从您的示例数据来看,您似乎使用时区(即 KST(存储日期。我不完全确定,但我想如果日期存储为 UTC,事情会按预期工作。
经过一些尝试和搜索,我发现java Date和python datetime之间存在一些差异。(儒略历与公历( 所以我用JodaTime替换了SimpleDateFormat,并得到了预期的结果,如下所示:
- 数据(原始(: {"ID": "doc_1", "MY_DATE": "1079-1-29"}
- Data (JanusGraph(: {"ID": "doc_1", "MY_DATE": [星期三1月 23日 00:32:08 KST 1079]}
- (我认为JanusGraph在内部使用java Date对象。
- 查询: g.V((.has("ID", "doc_1"(.valueMap("MY_DATE"(
- 输出 (gremlinpython(: datetime(1079, 1, 29(
谢谢