这在Odata v6中有效,但现在在v7中引发错误
$filter=CreateDateUtc gt 2014-06-23
在上面的示例中,CreateDateUtc将为DateTimeOffset。我不确定在破坏了此功能的版本之间有什么变化。
返回的错误是“在URI中指定的查询无效。在类型'Microsoft.OData.Edm.Date'和'System.Nullable`1 [System.DateTimeOffset]之间没有定义强制运算符。” < / p>
我尝试升级到v7.5,但这并不能解决问题。
我可以编写自定义代码来解决此问题,但是我不应该从哪里开始。我尝试使用自定义ODataUriResolver,在其中重写PromoteBinaryOperandTypes方法,但这似乎不起作用。是在修改实际查询的地方创建自定义EnableQueryAttribute的最佳方法吗?
任何指导都将非常有帮助。
答案 0 :(得分:2)
OData无法将常量转换为日期时间,因为它需要完整的日期时间常量:
$filter=CreateDateUtc gt 2014-06-23T00:00:00Z
或者您可以使用date()函数将属性转换为日期:
$filter=date(CreateDateUtc) gt 2014-06-23