如何在neo4j中将字符串转换为时间戳记

时间:2019-05-09 20:22:49

标签: neo4j

我已经使用CSV将字符串格式的时间戳加载到Neo4j中,因为我不知道如何从一开始就将它们设置为日期时间格式。然后,我找到了一种在字符串上使用“ split”函数的方法,然后将其转换为整数,然后转换为日期时间,我得到了大部分解决小问题的方法

我试图用“-”分割日期位,用“:”分割时间,但我不确定如何处理日期和时间之间的空格,使我的解决方案无法正常工作

MATCH (p:event)
WITH p, [x IN split(p.tstamp, "-") | toInteger(x)] AS parts
WITH p,parts,   [y IN split(p.tstamp, ":") | toInteger(y)] AS timeparts

SET p.timestamp = datetime({day: parts[2], month: parts[1], year: parts[0], hour: timeparts[0], minute:timeparts [1], second:timeparts[2] 
});

原始时间戳示例为:

//original timestamp
09/01/2019 17:34:58.0000

我希望有例如:

//e.timestamp           
09/01/2019 17:34:58 

但是我得到了

//e.timestamp            
"2019-01-01T00:34:58Z"

1 个答案:

答案 0 :(得分:2)

您可以尝试使用apoc functions解析任何格式的日期和时间。

我添加了带有您原始时间戳记的事件

{
  "tstamp": "09/01/2019 17:34:58"
}

然后查询完成了工作

MATCH (p:Event)
SET p.timestamp = datetime({ epochMillis: apoc.date.parse(p.tstamp, 'ms', 'MM/dd/yyyy HH:mm:ss') })

此查询后,我的活动如下:

{
  "tstamp": "09/01/2019 17:34:58",
  "timestamp": "2019-09-01T17:34:58Z"
}