WCF 数据服务查询 URL 中 DateTime 的 $filter 选项
Posted
技术标签:
【中文标题】WCF 数据服务查询 URL 中 DateTime 的 $filter 选项【英文标题】:$filter option for DateTime in WCF Data Services query URL 【发布时间】:2012-06-05 05:09:59 【问题描述】:WCF 数据服务允许通过 URL 中的选项方便地查询和过滤数据。例如,假设我想要价格大于 20 的产品:
http://www.example.com/Service.svc/Products?$filter=价格 > 20
但是如何将$filter
选项与DateTime
一起使用?假设我想要本月修改过的所有产品。
http://www.example.com/Service.svc/Products?$filter=ModifiedDate gt '2012-05-02'
这对我不起作用;它给出了错误信息
运算符“gt”与位置 13 处的操作数类型“System.DateTime”和“System.String”不兼容。
我对其他比较运算符(ge、lt、le、eq)也有同样的看法。到底是怎么回事?我该如何进行这项工作?我需要某种 DateTime 格式吗?我上面尝试的内容似乎记录在here。
【问题讨论】:
【参考方案1】:您好,请尝试使用以下语法
$filter=ModifiedDate gt datetime'2012-05-02T00:00:00'
其他日期时间函数可以在此参考中找到 odata url 约定
URI 约定:
prior to 5.0 (OData v2) for 5.0 (OData v3)http://msdn.microsoft.com/en-us/library/dd728283.aspx
【讨论】:
【参考方案2】:对于 oData 提要中的 DateTime 过滤,使用 DateTime 前缀限定 datetime 变量。
http://odata.netflix.com/v2/Catalog/Titles?$filter=DateModified eq DateTime'2012-01-31T09:45:16'
上面的 url 显示了如何根据日期时间过滤 netflix odata 提要。
【讨论】:
以上是关于WCF 数据服务查询 URL 中 DateTime 的 $filter 选项的主要内容,如果未能解决你的问题,请参考以下文章