我找不到仅使用日期从Azure搜索获取日期的方法。
索引中的日期如下:“ 2019-10-15T18:00:00Z”,“ 2019-10-22T18:00:00Z”,“ 2019-10-29T18:00:00Z”
如果我尝试StartDate/any(s: s eq 2019-10-15T18:00:00Z)
,我会得到结果
但是使用StartDate/any(s: s eq 2019-10-15)
不会出现
我已经在date
OData函数中尝试过使用StartDate/any(s: date(s) eq 2019-10-15)
,但出现错误“不支持函数'date'。”
有什么方法可以不使用时间部分来获取日期吗?
答案 0 :(得分:0)
以OData V4格式表示的日期和时间值:
yyyy-MM-ddTHH:mm:ss.fffZ
或yyyy-MM-ddTHH:mm:ss.fff[+|-]HH:mm
。 DateTimeOffset 字段的精度限制为毫秒。如果您以毫秒级的精度上传DateTimeOffset
值,则返回的值将四舍五入到毫秒。
将带有时区信息的DateTimeOffset
值上载到索引时,Azure搜索会将这些值标准化为UTC
。
请参考Azure搜索中的supported data types。
答案 1 :(得分:0)
从2019年5月6日的api版本开始,将不再支持在Azure搜索的过滤器中使用日期文字。这是我们从未打算支持的“意外功能”。无法获得任何结果的原因是,从Edm.Date
到Edm.DateTimeOffset
的隐式转换假定了UTC的午夜时间,而索引中的日期是UTC的下午6点。
我们建议在过滤器中明确提供时间和偏移量(对于UTC为Z),以避免出现此问题。
如果您希望Azure搜索本身支持Edm.Date
类型的字段和过滤器,请投票给this User Voice suggestion。