有没有办法通过指定"日期大于xxxxx"过滤器来返回OData中的一系列记录...但是使用之前从OData Feed获得的日期?
使用案例:假设我想构建一个显示最近完成的在线订单列表的网页.这就是我的目标:
我正在努力的是指定日期"大于"过滤器.出于某种原因,OData中的日期过滤器似乎与OData自己的本机日期格式不太匹配.我是否需要将最初获得的日期转换为可用于过滤的其他格式?
我想做这样的事情:
[http://mydomain/Services/v001.svc/Orders?$filter=close_dt gt 1338336000000][1]
Run Code Online (Sandbox Code Playgroud)
仅供参考:我正在使用V2
lam*_*ant 44
想出这个.
开箱即用的OData V2以JSON日期格式返回SQL的日期,如下所示:
/Date(1338282808000)/
Run Code Online (Sandbox Code Playgroud)
但是,为了在OData调用中使用日期作为过滤器,您的日期必须采用EDM格式,如下所示:
2012-05-29T09:13:28
Run Code Online (Sandbox Code Playgroud)
所以,我需要从我最初的OData调用中获取日期,然后将其转换为EDM格式,以便在我后续的OData调用中使用,如下所示:
/Services/v001.svc/Orders?$filter=close_dt gt DateTime'2012-05-29T09:13:28'
Run Code Online (Sandbox Code Playgroud)
我最终创建了一个执行格式化switcharoo的javascript函数:
function convertJSONDate(jsonDate, returnFormat) {
var myDate = new Date(jsonDate.match(/\d+/)[0] * 1);
myDate.add(4).hours(); //using {date.format.js} to add time to compensate for timezone offset
return myDate.format(returnFormat); //using {date.format.js} plugin to format :: EDM FORMAT='yyyy-MM-ddTHH:mm:ss'
}
Run Code Online (Sandbox Code Playgroud)
几个笔记:
avi*_*erg 30
在OData V4中,日期过滤格式已更改为 $filter=close_dt gt 2006-12-30T23:59:59.99Z
例如
对于以前版本的OData,请参阅以前的答案
小智 5
如果您使用日期时间逻辑,则可以执行 lt 或 gt。
例如 ...mydomain/Services/v001.svc/Orders?$filter=close_dt gt datetime'20141231'
| 归档时间: |
|
| 查看次数: |
64122 次 |
| 最近记录: |