C# Odata V4 DateTimeOffset筛选器出现问题

C# Odata V4 DateTimeOffset筛选器出现问题,c#,asp.net,odata,entity-framework-6,C#,Asp.net,Odata,Entity Framework 6,我试图通过空值或大于当前日期的值筛选OData调用中的日期字段。我尝试了所有我能在互联网上找到的不同的东西,在这里等等。到目前为止,一切都不起作用。它似乎会在一天内起作用,所以过期日期为昨天的东西不会出现,但过期日期为明天的东西会出现。然而,如果我的过期时间在当前时间的一个小时内,那么两个结果似乎都没有出现。例如:现在是08:58。如果一个项目在08:00到期,另一个在09:00到期,这两个项目都不会出现在我的结果中 我已经查看了时区信息,返回的结果与我为过滤器设置的时区相同 日期的筛选字符串模

我试图通过空值或大于当前日期的值筛选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));
var utcOffset=TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now);
var timeStamp=DateTime.UtcNow.ToString(“yyyy-MM-ddTHH:MM:ss”);
变量utcInfo1=(utcOffset
上面的代码是我尝试的原始字符串,没有任何我尝试和调整它并使其工作的更改。我很确定UtcNow不是用于此查询的正确时间值,但我可能错了。代码是C#

更新: 数据库值存储为smalldatetime。这是否/应该对比较两个日期的能力产生影响


我需要对此筛选器执行什么操作才能在项目设置过期后的一小时或几分钟或几秒钟内获得结果?

我今天看到了您的问题。要向ODataURI添加筛选器,请添加$filter=field_name gt 2018-02-22T00:00:00Z


不要将值括在单引号中。我在这里发现:-在文档中搜索5.1.1.11.1原始文本。

我不知道这是否真的解决了问题,但3年后,你是唯一一个尝试回答问题的人。