Вопрос

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…

Нравится

3 комментария

Для начала хочу обратить внимание на то,

что время в БД записывается в 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 передаваемое время правильно пересчитывалось в серверное время. Сейчас приходится вычитать из времени клиента смещение чтобы получить правильный отбор

Мальцев Александр Яковлевич,

Если пепредавать время в формате "yyyy-mm-ddThh:mm:ssZ" тогда

в БД записывается фактическое значение времени.

Показать все комментарии