我正在尝试使用NULL或大于当前日期的值来过滤OData调用中的日期字段。我已经尝试了所有可以在互联网上找到的不同的东西,并且在这里。到目前为止没有任何作似乎它可以用日间障碍,所以有效期为昨天的东西不会出现,但有明天到期日的东西会出现。但是,如果我的到期时间在当前时间的一小时内,似乎两个结果都没有显示出来。例如:现在是08:58。如果一个项目在08:00到期,一个项目在09:00到期,则不会显示在我的结果中。
我查看了时区信息,回来的结果与我为过滤器设置的时区相同。
过滤日期的字符串模板:
ExpirationDate eq null or ExpirationDate gt cast({0}, Edm.DateTimeOffset)) and Variations/any()
填写代码:
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));
上面的代码是我正在尝试的原始字符串,没有任何我尝试调整并使其正常工作的更改。我很确定UtcNow不适合用于此查询,但我可能错了。代码是C#。
更新: 数据库值存储为smalldatetime。是否应该对比较两个日期的能力产生影响?
我需要对此过滤器做什么才能在项目设置为过期的一小时或几分钟或几秒内获得结果?