2015-04-23 3 views
2

Я пытаюсь отфильтровать поле даты в вызове 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. Может ли это повлиять на способность сравнивать две даты?

Что мне нужно сделать для этого фильтра, чтобы получить результаты в течение часа или минут или секунд времени истечения срока действия элемента?

+0

Github также был бесполезным. – Matt

ответ

1

Сегодня я вижу ваш вопрос. Чтобы добавить фильтр в URI OData, добавьте $ 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 Примитивные литералы в документе.

+0

Я не знаю, действительно ли это исправляет проблему, но через 3 года вы единственный, кто даже попытался ответить. – Matt

Смежные вопросы