Я пытаюсь отфильтровать поле даты в вызове OData значениями, которые имеют значение NULL или больше, чем текущая дата. Я пробовал все разные вещи, которые я мог найти в Интернете, и здесь, на SO. Пока ничего не работает. Похоже, что он будет работать с дневным барьером, поэтому вещи с датой истечения вчерашнего дня не появятся, но вещи с датой истечения завтрашнего дня будут. Однако, если у меня есть срок действия, который находится в течение часа текущего времени, похоже, что ни один из результатов не появился. Например: сейчас 08:58. Если один элемент истекает в 08:00, а один истекает в 09:00, ни один из них не появится в моих результатах.Проблема с Odata V4 Фильтр DateTimeOffset
Я просмотрел информацию о часовом поясе, и возвращаемые результаты имеют тот же часовой пояс, который я устанавливаю для своего фильтра.
фильтра шаблон строки на дату:
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#.
UPDATE: Значение базы данных хранится как smalldatetime. Может ли это повлиять на способность сравнивать две даты?
Что мне нужно сделать для этого фильтра, чтобы получить результаты в течение часа или минут или секунд времени истечения срока действия элемента?
Github также был бесполезным. – Matt