ODATA日期查询

Las*_*nal 10 date odata

我需要返回日期为4/4/2013的记录(例如).ODATA服务中的日期字段返回{DATE:"2013-04-04T17:39:33.663"}

该查询应该如何?

到目前为止,我已经看到了三个选项,但没有一个是直截了当的.

选项一:datetime'2013-04-04T12:00':这需要规定时间

选项二:月份(DATE)eq 04天(DATE)eq 04 year(DATE)eq 2013:这很麻烦

选项三:使用带有'ge'和'le'的选项1来获取两个日期之间的记录:这也是废话.

这应该非常简单,因为它在T-SQL中.

Jen*_*n S 14

OData v3没有原始数据类型Date.您拥有的属性是a DateTime或a DateTimeOffset,因此,无论您是否使用它,该值都有一个时间部分,如果要检查值的相等性,还必须检查时间组件.

如果您确定永远不会使用时间部分(并始终将其设置为00:00),则可以执行以下查询:

/service.svc/EntitySet?$filter=DateProperty+eq+datetime'2013-04-04'
Run Code Online (Sandbox Code Playgroud)

这意味着00:00的时间部分.但那只是速记.如果您的某些日期时间最终结束时间部分不是00:00,则可能会出现意外结果.

因此,鉴于您只想检查值的日期部分,而不是完全相等,我认为您提到的第二种方法是实现它的最佳方法:

/service.svc/EntitySet?$filter=day(DateProperty)+eq+4+and+month(DateProperty)+eq+4+and+year(DateProperty)+eq+2013
Run Code Online (Sandbox Code Playgroud)

这样你就可以确切地检查你要检查的是什么,仅此而已.

对于它的价值,我相信DateOData v4中会出现一种数据类型.然后你就可以使用等式检查而不用担心时间.