【问题标题】:Inclusive RavenDB date range query not including matching date values as expected包容性 RavenDB 日期范围查询不包括预期的匹配日期值
【发布时间】:2015-08-19 15:51:23
【问题描述】:

我正在尝试了解 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])

我在这里缺少什么?据我了解,使用[] 符号应该会产生一个包含范围,那么为什么查询不返回这条记录???

【问题讨论】:

    标签: ravendb lucene.net ravendb-studio


    【解决方案1】:

    问题是您在文档中的日期不是有效的日期时间值。它需要使用 ISO 8601 格式的日期。

    这是格式:

    "yyyy-MM-ddTHH:mm:ss.fffffffzzz"

    【讨论】:

    • 感谢您的回复。你是对的,修改文档和查询上的日期格式both 以携带 7 个小数点值确实“修复”了结果问题。然而,关于日期值的比较似乎存在一个更深层次的问题,我认为这是一个 Lucene.NET 实现细节。根据您对 Lucene(.NET) 的了解,您知道是否可以考虑使用 PR 来改进日期值的比较以便 2015-08-18T05:00:00.000Z == 2015-08-18T05:00:00.0000000Z
    • 如果你发PR,我们一定会考虑的
    • 我很乐意调查一下。我的假设是否正确,即这是一个 Lucene.Net 实现细节,还是应该查看 RavenDB?我不熟悉这两个库的内部结构,因此您可以提供任何帮助我到达的提示将不胜感激。
    • 看看 RavenDB,是的。
    猜你喜欢
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 2019-07-06
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多