Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Часовые пояса  [new]
Диам
Member

Откуда:
Сообщений: 1443
Здравствуйте.
В базе работают компьютеры, котоыре находятся в разных часовых поясах.
При создании записи через ХП использую функцию GetDate() для получения времени создания документа. Но сохраняется время на сервере (Московское). А есть ли возможность сохранять время с тем смещением, которое установлено на компьютере клиента, не передавая доп.параметр?

Вообще, как люди организуют базу, работающую с разными часовыми поясами? Например Петя(+5 Екатеринбург) изменил запись, отметилось время Петино 11часов. Потом Вася (+4 Москва) изменил запись, отметилось время Васино 10ч.5 мин. Действие Пети должно выводиться раньше, чем действие Васи. Если будем сохранять в часах сервера, то все будет Ок (но Петя будет видеть время на час меньше своего), а если в часах клиента, то будет некорректна сортировка и вообще бардак произойдет.
24 мар 14, 10:28    [15775734]     Ответить | Цитировать Сообщить модератору
 Re: Часовые пояса  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3274
Лучше всего в таком случае писать время всегда в UTC. А дальше каждый сам для себя переводит в нужный часовой пояс.
24 мар 14, 10:36    [15775780]     Ответить | Цитировать Сообщить модератору
 Re: Часовые пояса  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Хранить время в UTC.
А на клиенте преобразовывать в/из местное время.
24 мар 14, 10:38    [15775800]     Ответить | Цитировать Сообщить модератору
 Re: Часовые пояса  [new]
Диам
Member

Откуда:
Сообщений: 1443
возможно ли как-то определить на сервере в каком часовом поясе работает клиент?
Вот есть у меня таблица с полем dt, тип данных datetimeoffset(0). Данные там хранятся вот такие:
2014-03-24 07:08:05 +00:00
2014-03-24 11:16:58 +04:00
2014-03-24 07:17:43 +00:00

Вася должен видеть 11 часов, а Петя 12... это возможно на стороне сервера?
24 мар 14, 11:29    [15776138]     Ответить | Цитировать Сообщить модератору
 Re: Часовые пояса  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31442
Диам
Вася должен видеть 11 часов, а Петя 12... это возможно на стороне сервера?
Сервер же не знает, какое время у клиента. Стандартно при коннекте это не передаётся.

Нужно либо передавать это время серверу, либо юзать UTC, и отображать правильно на клиенте.
24 мар 14, 11:40    [15776189]     Ответить | Цитировать Сообщить модератору
 Re: Часовые пояса  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Диам
возможно ли как-то определить на сервере в каком часовом поясе работает клиент?
Часто используют решения 3х-звенки (браузер - IIS - SQL). Сервер ни как не может узнать инфу о клиенте (знает аппликешн сервер)
Так что это только путало разрабов, а так нет и суда нет.
Зачем грузить сервак при каждом запросе/соединении если используется очень редко.
Отмазал?
24 мар 14, 15:20    [15778080]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить