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 选项的主要内容,如果未能解决你的问题,请参考以下文章

WCF 数据服务和 url 参数

如何更改 WCF 数据服务发布的 xml:base?

根据 WCF 服务中发布的 xml 内容识别操作,而不在 Url 中包含操作名称

如何从C#中的URL读取WCF服务的WSDL

如何在运行时通过 URL 使用 WCF Web 服务?

通过配置文件动态切换 WCF Web 服务引用 URL 路径