我剛開始使用Neo4jClient和Cypher,令人驚訝的是,我沒有找到任何使用在密碼查詢where子句中的DateTime字段的網絡上的任何示例。Neo4jClient的日期時間屬性 - 如何找到與Cypher日期之間的所有節點
當我的努力得到過濾上一個DateTime屬性一些節點,查詢不返回任何結果,這裏是什麼,我想一個例子:
說我找了所有的HR讓員工出生日期在一定時間範圍內的舉止。我正在嘗試構建的查詢如下所示。
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});
這裏員工 - > DOB/searchStart/searchEnd都是的DateTimeOffset字段和被表示爲「1990-09-28T19經由neo4jclient存儲在圖中的數據: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屬性。
問候,基蘭
你從哪裏得到的查詢表示? QueryParameters或DebugQueryText? –
@TathamOddie:謝謝,我直到現在才注意到這些屬性,所以使用IDE的QuickWatch窗口從那裏獲取查詢。我現在看到參數在QueryParameters和QueryText中正確表示,但是不返回結果。可能是數據庫中的數據沒有正確存儲,因爲我在管理窗口中將值看作字符串。我怎麼知道屬性本身的實際數據類型,可能是它出錯了? – Kiran
順便說一句剛剛遇到帖子http://blog.nigelsmall.com/2012/09/modelling-dates-in-neo4j.html,看起來DateTime不是在neo4j支持,這真的很奇怪,因爲我認爲它很常見按時間窗口過濾事物。其他人如何處理? – Kiran