首页 > 解决方案 > 如何在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"

标签: neo4j

解决方案


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

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

{
  "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"
}

推荐阅读