OData выборка с фильтраций по полю ModifiedOn с учётом TimeZone
Делаю OData запрос. Выставляю в $filter=ModifiedOn ge datetime'...+03:00', модифицирую запись с помощью клиента, и пытаюсь считать данные. Время передаю текущее время клиента - 10 минут +03:00 ( GMT ). Запрос возвращает пустой результат, как будто время не пересчитывается с учётом timezone. Ошибок в запросе нет.
PS: Запрос такой:
OrderProductCollection?$filter=ModifiedOn ge datetime'2018-06-27T07:45:07%2B03:00'&$select=OrderId,ProductId,Quantity,ModifiedOn
Перед запросом изменяются позиции в заказе, в частности количество и тут же делается запрос.
Но ответ пуст
<?xml version="1.0" encoding="utf-8"?>0https://.bpmonline.com/0/ServiceModel/EntityDataService.svc/OrderProduc…
Нравится
Для начала хочу обратить внимание на то,
что время в БД записывается в UTC (таймзона +00:00)
При создании записи, передавая значение времени по OData данные которые передаются в формате "yyyy-mm-ddThh:mm:ssZ"
в БД записывается фактическое значение времени.
После чего, когда пользователь заходит в приложение,
дата ему отображается с учетом таймзоны пользователя (из профиля пользователя).
Если отправлять время в формате "yyyy-mm-ddThh:mm:ss"
значение записывается в БД с учетом таймзоны сервера (например на сервере -8),
потом пользовтаель заходит, и ему время отображается с учетом отображается
с учетом его таймзоны (например у пользователя +3) происходит снова происходит расхождение во времени.
Передавать данные в фармате "yyyy-mm-ddThh:mm:ss+TZ" пример "2018-01-31T08:24:49+03:00" тогда в БД запишется значение в UTC, без учета +03:00, и когда пользователь будет просматривать значение он получит значение "2018-01-31T08:24:49" (потому что учли его часовой пояс).
Tsopa,
Проблема как раз в том что поле
ModifiedOn записывается автоматом на сервере, когда модифицируются записи пользователем. И мне хотелось бы фильтровать так, чтобы указав UTC +03:00 передаваемое время правильно пересчитывалось в серверное время. Сейчас приходится вычитать из времени клиента смещение чтобы получить правильный отбор