首页 > 解决方案 > Neo4J 3.4 `date` 函数是如何工作的?

问题描述

我将 Neo4J v3.3 升级到 v3.4 以尝试新的空间和时间功能。

我正在尝试非常简单的查询。一次有日期功能,一次没有。结果是不同的。

match (r:Model) where r.open_date>"2018-04-26" return count(r);

结果是 19283。

match (r:Model) where r.open_date>date("2018-04-26") return count(r);

结果为 0。

新功能的使用方法是什么?

标签: neo4jcypher

解决方案


[编辑]

新的时间类型,比如Dateand Duration,是非常特殊的类型,直接将它们与字符串或数字进行比较是没有意义的。

假设r.open_date正确的格式,这应该工作:

MATCH (r:Model)
WHERE DATE(r.open_date) > DATE("2018-04-26")
RETURN

此外,以下查询可能更高效(因为不需要构造第二个 DATE 对象):

MATCH (r:Model)
WHERE TOSTRING(DATE(r.open_date)) > "2018-04-26"
RETURN

推荐阅读