Mat*_*att 4 c# asp.net odata entity-framework-6
我正在尝试按 NULL 或大于当前日期的值过滤 OData 调用中的日期字段。我已经尝试了在互联网上可以找到的所有不同的东西,在这里也是如此。到目前为止没有任何效果。似乎它可以与日屏障一起使用,因此昨天到期日期的东西不会显示,但明天到期日期的东西会显示。但是,如果我的过期时间在当前时间的一小时内,则似乎两个结果都不会显示。例如:现在是 08:58。如果一项在 08:00 过期,另一项在 09:00 过期,则两者都不会显示在我的结果中。
我已查看时区信息,返回的结果与我为过滤器设置的时区相同。
过滤日期字符串模板:
ExpirationDate eq null or ExpirationDate gt cast({0}, Edm.DateTimeOffset)) and Variations/any()
Run Code Online (Sandbox Code Playgroud)
填写代码:
var utcOffset = TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now);
var timeStamp = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss");
var utcInfo1 = (utcOffset < TimeSpan.Zero) ? "-" : "+";
var utcInfo2 = utcOffset.ToString(@"hh\:mm");
_filterBuilder.Append(String.Format(_filterCORE, timeStamp + utcInfo1 + utcInfo2));
Run Code Online (Sandbox Code Playgroud)
上面的代码是我尝试的原始字符串,没有进行任何更改来尝试调整它并使其正常工作。我很确定 UtcNow 不是用于此查询的正确时间值,但我可能是错的。代码是C#。
更新:数据库值存储为smalldatetime。这是否/应该对比较两个日期的能力产生影响?
我需要对此过滤器执行什么操作才能在项目设置过期后的一小时、几分钟或几秒内获得结果?
小智 7
今天看到你的问题了 要将筛选器添加到 OData URI,请添加$filter=field_name gt 2018-02-22T00:00:00Z
请勿将该值括在单引号中。我在这里找到:http://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part2-url-conventions.html -在 中搜索5.1.1.11.1 Primitive Literals文档。
| 归档时间: |
|
| 查看次数: |
6829 次 |
| 最近记录: |