Cypher查询比较两个日期

时间:2014-08-08 05:20:55

标签: c# neo4j cypher

我有一个密码查询来比较两个日期。但它得到错误。这个查询有什么问题?有人可以帮忙吗?

GraphClient client= new GraphClient(new Uri("http://localhost:7474/"));
                              client.Connect();  
                              var date=client.Cypher
                              .Match("(e2:Event)")
                              .Where((Event e2) => Convert.ToDateTime(e2.notificationTime).CompareTo(DateTime.Now) < 0 )
                                .return(e=>e.As<Event>()).Results;

错误:

SyntaxException: Invalid input '{': expected an identifier character, whitespace, '?', '!', '.', node labels, '[', "=~", IN, IS, '*', '/', '%', '^', '+', '-', '<', '>', "<=", ">=", '=', "<>", "!=", AND, XOR, OR or ')' (line 25, column 25)"AND (e2.notificationTime{p7} < {p8})

1 个答案:

答案 0 :(得分:1)

首先,改变&#34; AndWhere&#34;部分到&#34;哪里&#34;因为你不需要链接&#39;哪里有&#39;该代码中的子句。也许这就是它无法转化为密码的原因。

如果它仍然不能正常工作,那我就说这个问题在你的&#39; Where&#39;条款。它可能是Convert.ToDateTime()。CompareTo无法转换为cypher。您应该尝试简化您的代码。这取决于你的e2.notificationTime是什么类型。 对于instanse,如果是Unix格式:

var currentDate = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
GraphClient client= new GraphClient(new Uri("http://localhost:7474/"));
client.Connect();  
var date=client.Cypher
               .Match("(e2:Event)")
               .Where((Event e2) => e2.notificationTime < currentDate)
               .Return(e=>e.As<Event>()).Results;

你必须摆脱其中的任何复杂表达方式,其中&#39;因为它正在转化为cypher