1

我有一些带有日期类型值的图形数据。我对日期类型属性的 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 之间是否存在一些序列化/反序列化问题?

谢谢

4

2 回答 2

1

Python 和日期存在一些问题,但我会为 3.4.3 修复它们,这是您所说的您正在使用的版本。该问题在TINKERPOP-2264以及修复程序中进行了描述,但基本上时区存在一些问题。从您的示例数据来看,您似乎将日期与时区(即 KST)一起存储。我不完全确定,但我想如果日期存储为 UTC,事情会按预期工作。

于 2019-12-19T11:40:04.140 回答
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 对象..)
  • 查询:gV().has("ID", "doc_1").valueMap("MY_DATE")
  • 输出 (gremlinpython): datetime(1079, 1, 29)

谢谢

于 2019-12-24T02:28:31.067 回答