我刚刚开始使用 Neo4jClient 和 Cypher,令人惊讶的是,我在网上找不到任何使用密码查询 where 子句中的 DateTime 的示例。
当我试图在 DateTime 属性上过滤一些节点时,查询没有返回任何结果,这是我尝试的示例:
假设我正在寻找出生日期在时间范围内的所有人力资源部门的员工。我正在尝试构建的查询如下所示。
client.Cypher
.Start(new { company = companyNode.Reference})
.Match("(department)<-[:BELONGS_TO]-(employee)-[:BELONGS_TO]->(company)")
.Where<Department>(department=>department.Name=='Human Resource')
.AndWhere<Employee>(employee=> employee.DOB >= searchStart && employee.DOB<= searchEnd)
.ReturnDistinct((employee)=> new {name = employee.Name});
这里 Employee->DOB/searchStart/searchEnd 都是 DateTimeOffset 字段,通过 neo4jclient 存储在图中的数据表示为“ 1990-09-28T19:02:21.7576376+05:30 ”
当我调试代码时,我看到 Neo4jClient 实际上将查询表示为这样的东西
AND ((employee.DOB >=10/3/1988 8:16:41 PM +03:00) AND (employee.DOB <=10/3/2003 8:16:41 PM +03:00))
当我摆脱 DOB where 子句时,我确实得到了结果。
如果有人能指出如何在查询中使用 DateTimeOffset 属性,我将不胜感激。
问候, 基兰