2015-08-19 70 views
0

我想了解RavenDB中的日期範圍過濾器。當我嘗試在特定日期範圍內查詢記錄如下:包含RavenDB日期範圍查詢不包含匹配的日期值如預期

Date:[2015-08-18T06:00:00.000Z TO 2015-08-19T06:00:00.000Z] 

文檔類型被查詢包含以下記錄(這我期待通過上述查詢返回)。

{ 
    "yada_yada": "stuff", 
    "Date": "2015-08-18T06:00:00Z", 
    "Source": "Joe Bob", 
    "Comments": "The force is strong with this one.", 
    "Id": "agentactivities-1" 
} 

查詢返回沒有結果。我試圖修改查詢,例如Date:[2015-08-18T06:00:00Z TO 2015-08-19T06:00:00.000Z](刪除十進制值),結果相同。但是,如果我刪除了Z(日期:[2015-08-18T06:00:00.000 TO 2015-08-19T06:00:00.000Z]),則查詢將返回該記錄。此外,修改一小時前的起始範圍arg似乎也可以工作(Date:[2015-08-18T05:00:00.000Z TO 2015-08-19T06:00:00.000Z]

我在這裏錯過了什麼?據我瞭解,使用[]符號應導致包含範圍,爲什麼不查詢返回此記錄?

回答

1

問題是您的文檔中的日期不是有效的日期時間值。它需要與ISO 8601格式的日期。

這是格式:

「YYYY-MM-DDTHH:MM:ss.fffffffzzz」

+0

感謝您的響應。你是對的,在文檔_both_上修改日期格式,並且帶有7個小數點值的查詢確實將問題與結果「修復」了。不過,我認爲有關日期值比較的更深層次的問題,我認爲這是一個Lucene.NET實現細節。根據你對Lucene(.NET)的瞭解,你知道是否可以考慮使用PR來改進日期值的比較,以便'2015-08-18T05:00:00.000Z == 2015-08-18T05:00 :00.0000000Z'? –

+0

如果您發送PR,我們一定會考慮它 –

+0

我會很樂意研究它。我是否認爲這是Lucene.Net實現細節,還是應該看RavenDB?我不熟悉這兩個庫的內部,所以你可以提供幫助我到達的任何提示將不勝感激。 –