janusgraph日期值与gremlin查询结果不匹配

时间:2019-12-19 08:33:15

标签: gremlin janusgraph gremlinpython

我有一些带有日期类型值的图形数据。 我对日期类型属性的gremlin查询正在运行,但是输出值不是日期值。

环境:

  • 剑形图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之间是否存在一些序列化/反序列化问题?

谢谢

2 个答案:

答案 0 :(得分:1)

Python和日期存在一些问题,但我会针对3.4.3(您已声明使用的版本)进行修复。该问题及其修复在TINKERPOP-2264中进行了描述,但是基本上时区存在一些问题。从示例数据来看,您似乎将日期和时区(即KST)存储在一起。我不确定,但是我想如果日期存储为UTC,一切都会按预期进行。

答案 1 :(得分:1)

经过一番尝试和搜索后,我发现java Date和python datetime之间存在一些差异。 (朱利安对格里高利历) 因此,我用JodaTime替换了SimpleDateFormat,并得到了预期的结果,如下所示:

  • 数据(原始):{“ ID”:“ doc_1”,“ MY_DATE”:“ 1079-1-29”}
  • 数据(JanusGraph):{“ ID”:“ doc_1”,“ MY_DATE”:[Wed Jan 23 00:32:08 KST 1079]}
    • (我认为JanusGraph在内部使用java Date对象。)
  • 查询:g.V()。has(“ ID”,“ doc_1”)。valueMap(“ MY_DATE”)
  • 输出(gremlinpython):datetime(1079,1,29)

谢谢