使用gremlin查询将长值(纪元)转换为日期格式

时间:2018-10-24 07:17:07

标签: gremlin tinkerpop3

我以长格式(时代)创建了顶点。我想使用gremlin查询将长值转换为特定的日期格式(YYYY-MM或YYYY-MM-DD)。 .map或.transform无法正常工作。有人可以帮忙吗。

1 个答案:

答案 0 :(得分:3)

Gremlin语言没有内置的功能来转换日期。如果要在Gremlin内执行操作,则必须使用lambda-对于Groovy,它看起来像:

gremlin> g = TinkerGraph.open().traversal()
==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]
gremlin> g.addV('person').property('dob',Date.parse('yyyy-MM-dd','2018-10-01').getTime())
==>v[0]
gremlin> g.V().valueMap()
==>[dob:[1538366400000]]
gremlin> g.V().values('dob').map{new Date(it.get()).format('yyyy-MM-dd')}
==>2018-10-01

您可以通过跳过Groovy提供的速记方式,而只在lambda中使用SimpleDateTime来用Java编写相同的内容。当然,TinkerPop建议不要使用lambda,在这种情况下,我认为更好的解决方案是简单地将结果返回为Long,然后根据需要在客户端上进行一次转换。