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" |
此页面是否有帮助?