Neo4j:将字符串转换为日期
Neo4j 3.4 引入了时间日期类型,虽然现在有强大的内置功能,但将字符串转换为日期仍然是一个挑战。
如果我们的字符串格式为 yyyy-MM-dd
,我们可以使用该字符串调用 date
函数,它将自动转换为日期。
RETURN date("2019-06-04") AS date
执行此查询将返回以下结果
日期 |
---|
"2019-06-04" |
但是,如果我们的字符串是另一种格式,例如 dd/MM/yyyy
呢?让我们尝试从这样的字符串创建日期。
RETURN date("04/06/2019") AS date
执行此查询将返回以下结果
Text cannot be parsed to a Date "04/06/2019" ^
解决此问题的一种方法是使用 split
函数将字符串手动解析为不同的组成部分。然后我们可以从这些组成部分创建日期。
WITH [item in split("20/07/2018", "/") | toInteger(item)] AS dateComponents
RETURN date({day: dateComponents[0], month: dateComponents[1], year: dateComponents[2]}) AS date
执行此查询将返回以下结果
日期 |
---|
"2018-07-20" |
此外,我们可以使用 APOC 库的 apoc.date.parse
函数将数据处理成支持的格式。此函数为处理不同的日期和时间模式提供了灵活的方法。
以下查询
-
使用
apoc.date.parse
函数将dd/MM/yyyy
日期字符串转换为毫秒时间戳 -
从该时间戳创建日期时间
-
从该日期时间创建日期
WITH apoc.date.parse("31/05/2019", "ms", "dd/MM/yyyy") AS ms
RETURN date(datetime({epochmillis: ms})) AS date
执行此查询将返回以下结果
日期 |
---|
"2019-05-31" |
我们也可以使用此函数来解析更长的日期格式
WITH apoc.date.parse("Tue, 10 September 2019", "ms", "EEE, dd MMMMM yyyy") AS ms
RETURN date(datetime({epochmillis: ms})) AS date
执行此查询将返回以下结果
日期 |
---|
"2019-09-10" |
此页面有帮助吗?