powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Текущее время с сервера
101 сообщений из 101, показаны все 5 страниц
Текущее время с сервера
    #38944679
delphi_begin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Помогите!

Сервер Firebird 2.5

Есть триггер на таблицу, который списывает в поле NEW.TIME_OF_CREATION=CURRENT_TIME;

Но при вставке записи в таблицу туда попадает время, большее, чем на сервере на 1 час!

Проверял время через CMD ->echo %time% - время верное. Только через сервер.

Скажите, может быть, где то в настройках FB как-то указывается часовой пояс или еще что-то влияющее на обработку текущего время сервера?? Спасибо
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38944681
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перезапусти Firebird. И не меняй часовой пояс на ходу.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38944704
delphi_begin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Админ только что признался, что менял сегодня часовой пояс. Спасибо, Шерлок)

Там сейчас работает много пользователей. Есть ли какая то возможность исправить это без перезапуска?
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38944711
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
delphi_beginЕсть ли какая то возможность исправить это без перезапуска?
Нет. Можешь высказать за это своё "фи" мелкомягким чудикам, которые насмерть кэшируют
TZOffset в своей RTL.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38944714
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
delphi_begin,

Ну пиши в триггере через

Код: plsql
1.
dateadd(-1 hour to current_time)



Хотя лучше перегрузить... Или не забыть исправить после перезагрузки...
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38944723
delphi_begin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Спасибо, но это будет слишком дерзко со стороны пиратов)
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38944725
delphi_begin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMaster,

Да, ребутнем, спасибо!
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38944732
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
delphi_beginэто будет слишком дерзко со стороны пиратов)
Под Линухом такой фигни вроде бы не наблюдается.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38944796
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наш поставщик обмена EDI незаметно переехал с датацентра в Польше ещё куда-то, в соседний часовой пояс.
Переезд прошёл "незамеченным" для пользователей, вот только внезапно время всех объектов в базе сдвинулось на час.
Из-за чего робот решил, что все документы были обновлены (ведь время изменилось).
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38968945
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имхо, жирнейший довод все таймстампы получать и хранить в UTC
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38968956
Поручик ·· Ржевский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-BrutalИмхо, жирнейший довод все таймстампы получать и хранить в UTCNLS то всё одно отсутствует
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38969059
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поручик ·· РжевскийFr0sT-BrutalИмхо, жирнейший довод все таймстампы получать и хранить в UTCNLS то всё одно отсутствует
Не очень понял, что ты имеешь под NLS, но если есть возможность полностью убрать timezone hell - глупо ею не воспользоваться. Не знаю, каким надо быть мазохистом, чтобы лавировать в этом безумии постоянных смен смещений и режимов DST.
P.S. Где проголосовать за CURRENT_UTCTIMESTAMP?
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38969154
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-BrutalГде проголосовать за CURRENT_UTCTIMESTAMP?
во-первых, не за UTCTIMESTAMP, а TIMESTAMP_UTC. А во-вторых, по уму нужен специальный тип данных.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38969166
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvFr0sT-BrutalГде проголосовать за CURRENT_UTCTIMESTAMP?
во-первых, не за UTCTIMESTAMP, а TIMESTAMP_UTC.
Как мне кажется, ты про тип, а я про сист. переменную. Если не так, то двойное подчеркивание не очень красиво смотрится, но не суть.
Ну а тип это хорошо, но решение будет нестандартным, плюс породит целую кучу проблем вроде "как мне перегнать это время в мое локальное", "как мне сравнить два локальных времени на сервере" и прочее.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38969168
Поручик ·· Ржевский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я и говорю - без полноценного введения NLS, нефиг даже тужиться
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38969231
-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-
Гость
Корректную работу с UTC, в принципе, можно реализовать самому. Определить домен, создать 2 функции для перевода в локальное время и обратно (причём для каждой базы можно гибко задавать часовой пояс (например через переменную БД), если вдруг база на хостинге). Работы на несколько часов.

Для FB конечно перспективней если в нём будет встроенная реализация.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38969242
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-Работы на несколько часов.
А подключить стандартную UDf GetExactTimestampUTC - работы на несколько секунд.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38969286
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-BrutalКак мне кажется, ты про тип, а я про сист. переменную.
я про стиль именования. CURRENT_UTCTIMESTAMP - это запредельный звездец. А CURRENT_TIMESTAMP_UTC - это прекрасно читаемое имя, особенно уже при наличии CURRENT_TIMESTAMP. Если тебя корежит от двух подчеркиваний, то почему не корежит от одного?
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38972978
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvCURRENT_UTCTIMESTAMP - это запредельный звездец.
Дело вкуса...
А CURRENT_TIMESTAMP_UTC - это прекрасно читаемое имя, особенно уже при наличии CURRENT_TIMESTAMP. Если тебя корежит от двух подчеркиваний, то почему не корежит от одного?
Единственное, что смущает - вроде бы больше идентификаторов с двумя _ нет.
Корректную работу с UTC, в принципе, можно реализовать самому. Определить домен, создать 2 функции для перевода в локальное время и обратно (причём для каждой базы можно гибко задавать часовой пояс (например через переменную БД), если вдруг база на хостинге). Работы на несколько часов.
По-хорошему, часовой пояс - это свойство клиента, а не базы.
Я и говорю - без полноценного введения NLS, нефиг даже тужиться
А еще лучше - без светлого будущего во всем мире нефиг тужиться, а то пашешь-пашешь, а потом вдруг апокалипсец! И все усилия насмарку.
В идеале дата должна быть жестко задана в инвариантном UTC + опциональный часовой сдвиг, д.б. полный набор функций для работы как с абсолютным, так и локальным значением не только в SQL, но также и на клиентах. Но слона надо есть по кускам.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38972991
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-BrutalПо-хорошему, часовой пояс - это свойство клиента, а не базы.
это не исключает времени в UTC, про которое ты сам сказал дальше.

я приведу простейший пример, который иллюстрируется гулго-календарем:
- перелет из локального часового пояса в другой часовой пояс.
мы имеем:
1. локальное время клиента (то, где он находится)
2. время вылета с указанием часового пояса
3. время прилета с указанием часового пояса

Причем, все это означает, что часовой пояс клиента - это не просто "часовой пояс У клиента", а именно часовой пояс, который клиент сообщает серверу для получения TIMESTAMP в его локальном времени.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973005
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal,

тут мало знать часовой пояс клиента. Нужно ещё знать и часовой пояс сервера иначе не понятно что там на клиенте добавлять. А сервер может находится где угодно. Можно конечно хранить всё время в 0 поясе, но текущее время так всё равно не определишь. Таким образом нужно полностью поддерживать новый тип данных, о чём даже тикет в трекере есть.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973080
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

если в БД время хранится в UTC, то часовой пояс сервера не нужно знать, чтобы "добавлять" что-то там к клиенту. Я же пример с гуглокалендарем не зря привел. Гуглокалендарь приводит время к локальному именно относительно клиента. Свое время или таймзона ему ни к чему совершенно.
А вот в ФБ "текущее время сервера" достаточно в UTC, и оно может быть преобразовано к локальному времени клиента, если клиент серверу перешлет свою timezone.

мне вот что-то не удается придумать, зачем серверу нужно знать свое локальное время без UTC. Данные мы всегда получаем в сторону клиента, и при "всеобщем UTC" значение имеет только часовой пояс клиента.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973102
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

Даже если сделать для получения текущего времени в UTC отдельную контекстную переменную, то по идее надо сделать и контекстную переменную возвращающую текущий часовой пояс сервера (хотя бы для справки).

Да и не плохо бы знать что за время на сервак запихнули, было ли оно приведено к UTC или пришло как есть.

Если определён отдельный тип данных то клиент FB сам поймёт надо ли преобразовывать время или оставить как есть без вызова дополнительных функций.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973119
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисто по идее надо сделать и контекстную переменную возвращающую текущий часовой пояс сервера
с этим не спорю, но как я уже сказал, я не смог придумать использование такой фичи. В контексте "UTC+часовой пояс клиента" это было бы совершенно бесполезной информацией.
Например, текущий CURRENT_TIMESTAMP предполагает, что часовой пояс клиента и сервера идентичен. И различия этих часовых поясов порождает проблемы. Но если у нас есть UTC, и у меня сервер в UK, а я сижу в Москве, и знаю свой часовой пояс, зачем мне локальное время сервера? Придумай пример :-)
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973122
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не надо ничего придумывать.
надо сделать как у "старших братьев".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973126
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисДа и не плохо бы знать что за время на сервак запихнули, было ли оно приведено к UTC или пришло как есть.
ФБ получает текущее время от сервера (ОС). ОС хранит время в UTC + часовой пояс. "Запихнуть" время на сервер может только клиент, опять же, у него есть свой часовой пояс.
Ты теоретизируешь про "мешанину", а я теоретизирую, что время хранится всегда в UTC, а timestamp мы получаем или полностью в UTC, или как локальный с учетом часового пояса клиента. В моем случае часовой пояс сервера не нужен.
Если вводить время в UTC, то время без UTC на сервере вообще теряет смысл (и как текущее время, и как тип данных).
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973127
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

сервера ни к чему, а вот время другого клиента может вполне пригодится, который например во Владивостоке. По этой схеме не хранения часового пояса ты получишь только время в своем часовом поясе. А если надо получить его время надо непременно знать, что он во Владивостоке (а потом получать его часовой пояс) или его часовой пояс. Тут и получается что либо придётся сохранять его местоположения либо часовой пояс.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973137
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

я тут имел ввиду что может потребовать знать сразу два времени. Ибо то что я говорил про текущее время во Владивостоке и так реализовано сейчас. И вот тут надо знать что переводить, а что нет.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973141
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

у меня нет "схемы не хранения часового пояса" :-) поэтому в моей схеме по барабану, где сидит какой клиент - время всегда будет в UTC, при желании приведенное к моему часовому поясу (или к другому часовому поясу).

Мимопроходящийнадо сделать как у "старших братьев".
или соседей

http://justatheory.com/computers/databases/postgresql/use-timestamptz.html

вполне разумные "настройки", которые позволяют исключить вот этот самый геморрой.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973148
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

у них и типы отдельные для этого есть timestamp [ (p) ] with time zone и time [ (p) ] with time zone.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973159
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коль пошла такая пьянка, заодно придумайте, как обеспечить совместимость :-) По стандарту CURRENT_* функции возвращают UTC. Забивать болт и делать отсебятину или ломать все?
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973170
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

ну один раз уже такое было, когда поведение типов менялось. Тогда 3 диалект добавили. Хотя мне это решение не нравится.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973185
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrЗабивать болт и делать отсебятину или ломать все?
/me голосует за "всё ломать".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973186
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денису них и типы отдельные для этого есть timestamp [ (p) ] with time zone и time [ (p) ] with time zone.
да. так речь о том, чтобы их сделать.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973188
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

ну так получается что мы об одном и том же говорим. Ибо как раз это и есть по стандарту
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973193
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvречь о том, чтобы их сделать.
Причём их не надо делать на сервере. Это чисто клиентские типы для преобразования на клиенте.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973198
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovПричём их не надо делать на сервере. Это чисто клиентские типы для преобразования на клиенте.
это тебе где такое приснилось?
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973304
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrколь пошла такая пьянка, заодно придумайте, как обеспечить совместимость :-) По стандарту CURRENT_* функции возвращают UTC. Забивать болт и делать отсебятину или ломать все?
Если "ломать все" подразумевает "делать как у других/по стандарту", то я за "ломать".
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973323
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miwaonline,

нет уж. Режим совместимости надо обеспечивать. Пусть и через новый диалект и с геморроем при переходе.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973331
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrэто тебе где такое приснилось?
А какой смысл от них на сервере? Вон, у соседей с этими типами явно связано мнение, что
"не надо их использовать, геморроя много толку мало".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973333
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Симонов Денис!
You wrote on 1 июня 2015 г. 14:28:04:

Симонов Денис> нет уж. Режим совместимости надо обеспечивать. Пусть и через новый
> диалект и с геморроем при переходе.не нужно плодить сцущности.
достаточно параметра в конфиге.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973377
-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-
Гость
Если время на сервере хранить в UTC без тайм-зоны, то получится что владивостокские (UTC+10) 01.01.2016 09:00 равны серверному 31.12.2015 23:00.
Как выбрать документы за 1 января по владивостокскому времени? И что вернёт CURRENT_DATE для этого владивостокского времени?
Т.е. вопрос как соотнести timestamp с date, если сервер считает сутки по лондонскому времени.

Имхо сервер должен знать где у него граница между сутками.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973442
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvПричем, все это означает, что часовой пояс клиента - это не просто "часовой пояс У клиента", а именно часовой пояс, который клиент сообщает серверу для получения TIMESTAMP в его локальном времени.
Причем можно даже и не сообщать, перекладывая преобразование/отображение на клиента.
kdvНапример, текущий CURRENT_TIMESTAMP предполагает, что часовой пояс клиента и сервера идентичен. И различия этих часовых поясов порождает проблемы. Но если у нас есть UTC, и у меня сервер в UK, а я сижу в Москве, и знаю свой часовой пояс, зачем мне локальное время сервера? Придумай пример :-)
++
dimitrколь пошла такая пьянка, заодно придумайте, как обеспечить совместимость :-) По стандарту CURRENT_* функции возвращают UTC. Забивать болт и делать отсебятину или ломать все?
Стандарт есть Истина, к коей стремиться надобно. Вопрос только, каких размеров гемор будет с таким breaking change. Еще один диалект - муторно, тут первый-то постоянно всплывает. Хотя сейчас есть отличная возможность приурочить всё это к трёшке, пока она еще не закаменела в релизе.
Если время на сервере хранить в UTC без тайм-зоны, то получится что владивостокские (UTC+10) 01.01.2016 09:00 равны серверному 31.12.2015 23:00.
Как выбрать документы за 1 января по владивостокскому времени? И что вернёт CURRENT_DATE для этого владивостокского времени?
Вариант совсем без таймзоны вроде как и не рассматривается, хотя приведенный пример как раз не сильно сложен в случае типа TIMESTAMP: принудительно переводить полученные от клиента TIMESTAMP из его часового пояса (заданного заранее) в UTC. Проблемы начнутся при использовании типа DATE.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973450
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutaldimitrколь пошла такая пьянка, заодно придумайте, как обеспечить совместимость :-) По стандарту CURRENT_* функции возвращают UTC. Забивать болт и делать отсебятину или ломать все?
Стандарт есть Истина, к коей стремиться надобно. Вопрос только, каких размеров гемор будет с таким breaking change. Еще один диалект - муторно, тут первый-то постоянно всплывает. Хотя сейчас есть отличная возможность приурочить всё это к трёшке, пока она еще не закаменела в релизе.


поздно. Список фич для трёшки заморожен.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973459
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-BrutalПроблемы начнутся при использовании типа DATE.
Они начнутся ещё раньше, когда с этой бедой начнут работать пользователи на ОСях разной
степени пропатченности и самыми дикими настройками, какие в голову взбредут.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973483
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Рекомендации для Постгреса, кстати, довольно толковые. И вообще, неплохая реализация сабжа без breaking change.

Dimitry SibiryakovОни начнутся ещё раньше, когда с этой бедой начнут работать пользователи на ОСях разной
степени пропатченности и самыми дикими настройками, какие в голову взбредут.

Например? Мне кажется, как раз за счет подтягивания пояса с клиента результаты могут хоть и плавать на определенную константу, но все же получить осмысленные данные при выборке between '2000-01-01 00:00:00, GMT+8.32' and '2000-01-01 01:00:00, GMT+8.32' больше, чем при between '2000-01-01 00:00:00' and '2000-01-01 01:00:00', если у клиента GMT+8.32 (мало ли какая страна так выпендрится), у сервера GMT+3, а у заполнявшего клиента GMT-9.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973486
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. мой поинт в том, что если вовлечены дико настроенные ОСи странной пропатченности - с ними и сейчас правильные результаты едва ли получишь.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973496
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutalмой поинт в том, что если вовлечены дико настроенные ОСи странной
пропатченности - с ними и сейчас правильные результаты едва ли получишь.
Сейчас-то проблем нет: сказал клиент "12:00", сервер выдаёт данные на "12:00". А вот при
учёте часового пояса, который может быть выставлен неверно или без учёта смены летнего
времени ты получишь данные на "13:00" или "11:00" очень даже легко.

Возьмём последний случай: на сервере, где крутится трекер, было выставлено американское
время, но часовой пояс UTC. В результате все считали, что он на 10 часов в будущем.
Предпоследний случай: пропатченная винда для Москвы имеет пояс GMT+3, непропатченная
GMT+4. Будет забавно, если с двух соседних компьютеров запрос будет выдавать разные данные?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973517
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovПредпоследний случай: пропатченная винда для Москвы имеет пояс GMT+3, непропатченная GMT+4.
это не только винды касается, но и старых андроидов, которые не знают про эту особенность. Приходится ставить таймзону для другого местоположения.

Однако, даже в твоем случае "для Москвы", при разном времени на компах с ГМТ+3 и ГМТ+4 переданное с клиента время с учетом гмт будет одинаковым.
Я почему и привел пост с вариантом для PostgreSQL, что там даны рекомендации о том, как избежать подобного головняка - не иметь дела с не-UTC типами времени, и иметь на клиенте обязательно GMT. Ну и не получать с сервера время не в UTC. Или получать, но с учетом таймзоны клиента

Dimitry SibiryakovА вот при учёте часового пояса, который может быть выставлен неверно или без учёта смены летнего
времени ты получишь данные на "13:00" или "11:00" очень даже легко.
не очень я понял. Допустим, у меня 2 компа.
1 - время 12:00, UTC+3
2 - время 13:00, UTC+4

в UTC на этих компах время одинаковое (12-3 = 9, 13-4=9).
если я хочу найти что-то на это время, мне надо
- или искать 9:00 UTC+0 на любом из компов
- или искать 12:00 UTC+3 на компе 1
- или искать 13:00 UTC+4 на компе 2
то есть, или свое время + свое UTC, или время в UTC с нулевой таймзоной. Просто искать 12:00 без указания таймзоны я не имею права, ибо действительно будет вранье. Но "сдвиг" у компов не имеет значения, с тем же успехом они могут существовать в действительно разных таймзонах.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973518
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-BrutalПроблемы начнутся при использовании типа DATE.Если приводить DATE к TIMESTAMP ставя 12:00 в поле времени - не начнутся. Как максимум - часовая разбежка при некорректном учёте перехода на зимнее-летнее время.

P.S. Клинические случаи "правильное местное время при неправильном часовом поясе" не рассматриваем.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973522
-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-
Гость
Dimitry SibiryakovСейчас-то проблем нет: сказал клиент "12:00", сервер выдаёт данные на "12:00". А вот при
учёте часового пояса, который может быть выставлен неверно или без учёта смены летнего
времени ты получишь данные на "13:00" или "11:00" очень даже легко.

Возьмём последний случай: на сервере, где крутится трекер, было выставлено американское
время, но часовой пояс UTC. В результате все считали, что он на 10 часов в будущем.
Предпоследний случай: пропатченная винда для Москвы имеет пояс GMT+3, непропатченная
GMT+4. Будет забавно, если с двух соседних компьютеров запрос будет выдавать разные данные?Клиент должен видеть по дефолту всё в поясе сервера. Поэтому у сервера должен быть указан рабочий пояс (должен браться либо из ОС, либо из конфига FB, либо из конфига БД). А клиент пусть сам решает в каком ему поясе работать - в серверном или в поясе клиентсой ОС или в каком другом.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973527
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvне очень я понял. Допустим, у меня 2 компа.
1 - время 12:00, UTC+3
2 - время 13:00, UTC+4
А вот без "допустим" (по моему собственному опыту) у тебя будет
1 - время 12:00, UTC+3
2 - время 12:00, UTC+4
время выставлено принудительно одинаковое, ибо по нему с работы уходить.

Последствия просчитать сумеешь?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973538
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-Как выбрать документы за 1 января по владивостокскому времени?Или различать календарные даты и отметки на шкале мирового времени или разрабатывать приложение, умеющее работать в разных часовых поясах.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973553
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Звиняйте, коллеги, но моя мало что из вашей интеллектуальной беседы понял.

Такое впечатление, что каждый разговаривает на своем языке.
Может кто сформулирует некие примеры (модели поведения) сервера, ради чего все это?

Типа такого: Есть некая организация со штаб квартирой во Владике (для примера), у нее есть пара филиалов в Москве и Калининграде. фиксируются даты прохождения первички (например накладная типа торг12), доки могут проходить по любой из трех точек, надо получить, например, оборотную ведомость за 13 мая (например пять таки). По какому часовому поясу она должна быть? Должна ли оборотка быть одинаковой при получении оной в любом филиале? А если я получаю отчет строго по владику и строго по москве отдельно? а если вместе?
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973571
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyЕсть некая организация со штаб квартирой во Владике (для примера), у нее есть пара филиалов в Москве и Калининграде. фиксируются даты прохождения первички (например накладная типа торг12), доки могут проходить по любой из трех точек, надо получить, например, оборотную ведомость за 13 мая (например пять таки). По какому часовому поясу она должна быть?Ни по какому - календарная дата никак не привязана к часовому поясу.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973588
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovНи по какому - календарная дата никак не привязана к часовому
поясу.
Да ну? Тебя не смущает, что во Владивостоке уже наступило завтра? Документ проведённый там
прямо сейчас в какой отчёт должен попасть: сегодняшний или завтрашний?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973616
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovДа ну? Тебя не смущает, что во Владивостоке уже наступило завтра? Документ проведённый там
прямо сейчас в какой отчёт должен попасть: сегодняшний или завтрашний?Если документ, в шапке которого пропечатана конкретная календарная дата попадёт в другой месяц/квартал, налоговую, вероятно, не устроит лепет о часовых поясах и географически разнесённых узлах информационной системы.

UTC позволяет хронологически упорядочить некоторую последовательность событий без всяких преобразований отметок "дата-время".
Но существует ещё, как минимум две задачи:
1. Работа с местным временем (расписание, привязанное к физиологическим привычкам организма);
2. Работа с календарными датами.
Если не мешать эти три задачи в одну кучу - всё достаточно просто.
Если необходимо совместно обрабатывать две и более области - надо аккуратно продумывать разные сценарии конкретных случаев.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973632
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovUTC позволяет хронологически упорядочить некоторую
последовательность событий без всяких преобразований отметок "дата-время".
Но существует ещё, как минимум две задачи:
В этих двух задачах UTC скорее мешает. А хронологическое упорядочение надёжнее делается
генераторами.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973633
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-,Поэтому у сервера должен быть указан рабочий пояс (должен браться либо из ОС, либо из конфига FB
у сервера просто время должно быть в UTC. Уже который раз спрашиваю - зачем клиенту знать часовой пояс сервера? Клиенту надо знать свой часовой пояс (настоящий или фиктивный) и какой-нибудь "чужой" часовой пояс (сохраненный с временем другим коннектом).

Опять повторю пример с гуглокалендарем.
Я сижу в Москве, ГМТ+3.
У меня по москве (гмт+3) вылет из Москвы в 12:00 и прилет в 15:00 в Прагу. В Праге локальное время ГМТ+2. Если я меняю СВОЕ время на ГМТ+2, я вижу, что я улетаю из Москвы в 11 часов, а прилетаю в Прагу в 14:00.
Зачем мне тут время сервера гуглокарт, которые находятся вообще фиг знает где?

Dimitry Sibiryakov1 - время 12:00, UTC+3
2 - время 12:00, UTC+4
а! да. но чем это отличается от неправильно установленного времени, вообще? Что с UTC, что без, неправильное время что на клиенте, что на сервере, будет все портить.

Ivan_Pisarevsky доки могут проходить по любой из трех точек, надо получить, например, оборотную ведомость за 13 мая (например пять таки). По какому часовому поясу она должна быть?
тут фокус вот в чем - 12 часов во Владике это вовсе не 12 часов в Москве, но относительно "рабочего дня" это именно одинаковое 12 часов. То есть, если мы хотим смотреть относительное значение, значит нам надо игнорировать таймзону. Если же нам нужно абсолютное время наступления события, то без таймзоны никак.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973644
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Kdv!
You wrote on 1 июня 2015 г. 17:48:35:

Kdv> у сервера просто время должно быть в UTC. Уже который раз спрашиваю -
> зачем клиенту знать часовой пояс сервера?+1
не клиентово это дело.

у Оракла клиент указывает свою TIME_ZONE.
для того чтоб корректно трансформировать время сервера в локальное и
обратно.
где стоит сервер - в Аризоне, или в Цюрупинске - значения не имеет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973653
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovВ этих двух задачах UTC скорее мешает. А хронологическое упорядочение надёжнее делается
генераторами.Уехал генеральный в командировку и решил поиграть в снабженца: зашёл в московский офис, сделал заказ, оформил доверенность на сотрудника и сказал, чтобы всё это распечатали и выдали во владивостокском офисе, куда через полчаса подойдёт "сотрудник из доверенности".
Если потребуется предоставить подтверждение того, что сотрудник прокосячил и пришёл на три часа позже, то как мы привяжем генераторы к отметкам времени задним числом?
Да, если нужна "монотонная последовательность", то целые числа из генераторов - то, что доктор прописал.
Если нужна именно хронология, то на более-менее коротких интервалах лучше UTC пока ничего не придумано. Хотя есть два варианта записи:
1. UTC (HTTP)
2. Местное время и смещение от UTC (электронная почта).
У обоих вариантов есть свои плюсы и минусы.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973657
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvа! да. но чем это отличается от неправильно установленного времени, вообще?
Тем, что пользователь тычет в правый нижний угол экрана и на голубом глазу божится, что
время у него на компьютере правильное. И даже часовой пояс может быть правильный. И даже
автоматический переход на летнее время может быть не отключен. Но он будет упорно молчать
о том, что время он таки ручками подвёл, поскольку мнение об этом переходе у его ОСи не
совпадает с текущей линией партии.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973658
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насчет примера с проводками во Владике-Москве-Калининграде: timestamp_TZ вполпинка перегоняется куда угодно, хоть в timestamp, хоть в другую таймзону. Например, cast aTimeTZ as timestamp (=time_UTC + TZ_Offset) либо aTimeTZ as time zone 'MSK' (=time_UTC + 'MSK'_TZ_Offset ). Так что не вижу тут проблемы, кроме организационной: решить, как именно делать подсчет, по календарю или по общей шкале.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973666
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНо он будет упорно молчать о том, что время он таки ручками подвёл, поскольку мнение об этом переходе у его ОСи не совпадает с текущей линией партии.Не надо рассматривать клинические случаи - всех не предусмотришь.
Прислали UTC - смотрим разницу и посылаем всех, кто "сильно расходится", прислали местное время и смещение - привели к UTC и сравнили, прислали местное время и часовой пояс - посчитали смещение для часового пояса, опять привели к UTC и, таки, сравнили.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973670
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovХотя есть два варианта записи:
1. UTC (HTTP)
2. Местное время и смещение от UTC (электронная почта).
У обоих вариантов есть свои плюсы и минусы.
А есть третий вариант, UTC+смещение (как раз таки HTTP) - и он лишен всех минусов))
Тем, что пользователь тычет в правый нижний угол экрана и на голубом глазу божится, что
время у него на компьютере правильное. И даже часовой пояс может быть правильный. И даже
автоматический переход на летнее время может быть не отключен. Но он будет упорно молчать
о том, что время он таки ручками подвёл, поскольку мнение об этом переходе у его ОСи не
совпадает с текущей линией партии.
С похожим успехом можно поменять в настройках локали разделитель десятичных на ~ и весело наблюдать, как валятся все StrToFloat без явного указания FormatSettings. В битве между гроздью проверочных условий и колхозным тюнингом ОС-ей всегда выиграет последний, ибо нездоровая фантазия юзверей безгранична
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973673
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovНе надо рассматривать клинические случаи - всех не
предусмотришь.
Ну да, не тебе же потом на саппорте сидеть...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973679
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvТо есть, если мы хотим смотреть относительное значение, значит нам надо игнорировать таймзону. Если же нам нужно абсолютное время наступления события, то без таймзоны никак.Вот именно, а в топике эти 2 направления рассуждений слиты в кучу, отчего нихрена не понятно кто и что хочет доказать оппонентам.

kdvтут фокус вот в чем - 12 часов во Владике это вовсе не 12 часов в МосквеЕстественно я понимаю в чем фокус. Еще интересней 6 утра во владике.

Моя мысль проста, пусть желающие новых фич на конкретном примере продемонстрируют как именно им может помочь новая фича сервера.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973684
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-BrutalА есть третий вариант, UTC+смещение (как раз таки HTTP) - и он лишен всех минусов))У любого варианта со смещением есть фундаментальный изъян: невозможно корректно сдвинуть отметку по временнОй шкале. Для такого сдвига требуется (именованный) часовой пояс. Ну и умение работать с базой часовых поясов .

P.S. HTTP, таки - без смещения:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
wget -S --spider  http://ya.ru/ 
Spider mode enabled. Check if remote file exists.
--2015-06-01 23:20:58--   http://ya.ru/ 
Resolving ya.ru... 93.158.134.3, 213.180.193.3, 213.180.204.3
Connecting to ya.ru|93.158.134.3|:80... connected.
HTTP request sent, awaiting response...
  HTTP/1.1 200 Ok
  Server: nginx
  Date: Mon, 01 Jun 2015 15:21:01  GMT 
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973692
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНу да, не тебе же потом на саппорте сидеть...Вот как раз недавно читал "слишком большая разница времени" в журнале блокированных пакетов ViPNet-а. И, что характерно, созвонились и поправили настройки у клиента. А несколько ранее подправил настройки и настроил синхронизацию на паре наших компов.
Поэтому не надо рассказывать мне о тяжёлых буднях горячей линии вообще и сисадминов - в частности.
Если косяки времени пофигу - можете делать что хотите, если синхронизация существенна - и на клиенте и на сервере должны быть правильными и мировое время и часовой пояс. Оба. На обоих узлах.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973823
Фотография Секретное имя пользователя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovkdvа! да. но чем это отличается от неправильно установленного времени, вообще?
Тем, что пользователь тычет в правый нижний угол экрана и на голубом глазу божится, что
время у него на компьютере правильное. И даже часовой пояс может быть правильный. И даже
автоматический переход на летнее время может быть не отключен. Но он будет упорно молчать
о том, что время он таки ручками подвёл, поскольку мнение об этом переходе у его ОСи не
совпадает с текущей линией партии.
сдается мне, что если ориентироваться на тех, кто делает неправильно, то и сам всё сделаешь неправильно
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973830
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovА несколько ранее подправил настройки и настроил синхронизацию на
паре наших компов.
Ну тогда ты должен бы представлять себе на что это будет похоже с миллионной-то user base...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973905
-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-
Гость
Кто-нибудь может точно сказать сколько времени будет в Москве ровно через 2 года?
Сколько будет в Лондоне сказать можно. А вот сколько будет в Москве - зависит от того будет ли через два года осуществляться перевод часов на летнее время, или нет. А это политический вопрос.

Нам что нужно?
1. Хранить всё в UTC (имхо без смещения, т.е. в UTC+0).

2. Уметь задавать пояс сервера. Админу сервера может быть удобно:
a) Использовать таймзону ОС.
б) Использовать свою тайм-зону. Это чтобы отвязаться от настроек ОС. FB-инстансов на одном сервере может быть несколько, с разными настройками зон.
в) Использовать для разных БД разные тайм-зоны. Это если у него на одном FB-сервере крутятся БД разных офисов (например Московский и Нью-Йоркский, и клиенские части программ соответственно всё видят по Москве или по Нью-Йорку (или как клиент захочет)).

3. Уметь отдавать время с сервера клиенту в удобной ему зоне. Разработчику порограммы может быть удобно:
a) Видеть всё только в зоне сервера.
б) Видеть всё только в зоне своей ОС.
в) Видеть всё в указанной самим клиентом зоне (естественно что на каждый коннект она может быть своя).
г) Иметь возможность менять рабочую зону без переконнекта.
д) Иметь возможность указывать рабочую зону для конкретного запроса.

4. Правильно обрабатывать запросы типа:
- ... where TimeStampField >= CURRENT_DATE(CLIENT_ZONE) -- чтобы получить записи за клиентское сегодня (клиентский пояс указывается в пункте 3)
- ... where TimeStampField >= CURRENT_DATE(SERVER_ZONE) -- чтобы получить записи за серверное сегодня (серверный пояс указывается в пункте 2)
- ... where TimeStampField >= CURRENT_DATE(+3) -- чтобы получить записи за (UTC+3)-шное сегодня.

И много-много всего другого. Много писанины :)
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38973978
Фотография Секретное имя пользователя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-Кто-нибудь может точно сказать сколько времени будет в Москве ровно через 2 года?

Сколько будет в Лондоне сказать можно. А вот сколько будет в Москве - зависит от того будет ли через два года осуществляться перевод часов на летнее время, или нет. А это политический вопрос.

Нам что нужно?
1. Хранить всё в UTC (имхо без смещения, т.е. в UTC+0).

2. Уметь задавать пояс сервера. Админу сервера может быть удобно:
a) Использовать таймзону ОС.
б) Использовать свою тайм-зону. Это чтобы отвязаться от настроек ОС. FB-инстансов на одном сервере может быть несколько, с разными настройками зон.
в) Использовать для разных БД разные тайм-зоны. Это если у него на одном FB-сервере крутятся БД разных офисов (например Московский и Нью-Йоркский, и клиенские части программ соответственно всё видят по Москве или по Нью-Йорку (или как клиент захочет)).

3. Уметь отдавать время с сервера клиенту в удобной ему зоне. Разработчику порограммы может быть удобно:
a) Видеть всё только в зоне сервера.
б) Видеть всё только в зоне своей ОС.
в) Видеть всё в указанной самим клиентом зоне (естественно что на каждый коннект она может быть своя).
г) Иметь возможность менять рабочую зону без переконнекта.
д) Иметь возможность указывать рабочую зону для конкретного запроса.

4. Правильно обрабатывать запросы типа:
- ... where TimeStampField >= CURRENT_DATE(CLIENT_ZONE) -- чтобы получить записи за клиентское сегодня (клиентский пояс указывается в пункте 3)
- ... where TimeStampField >= CURRENT_DATE(SERVER_ZONE) -- чтобы получить записи за серверное сегодня (серверный пояс указывается в пункте 2)
- ... where TimeStampField >= CURRENT_DATE(+3) -- чтобы получить записи за (UTC+3)-шное сегодня.

И много-много всего другого. Много писанины :)
Интересно еще рассмотреть вариант, когда мы сегодня записали время UTC, завтра попросили у сервера, передав ему смещение. Всё хорошо. Через некоторое кол-во лет наш часовой пояс сменился. Мы снова попросили данные за тот период, передав уже новое смещение и получили фигню-с. Впрочем, это проблемы клиента, пусть записывает и UTC, и локальное время, если ему нужны запросы по локальному.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38974003
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovУ любого варианта со смещением есть фундаментальный изъян: невозможно корректно сдвинуть отметку по временнОй шкале. Для такого сдвига требуется (именованный) часовой пояс. Ну и умение работать с базой часовых поясов .
Ну да, и в советах по постгресу парень так и советует. Но это вполне можно даже зашить внутрь клиентской библиотеки. По крайней мере, проблемы варианта со смещением решаемы, а в ряде случаев даже вовсе отпадают за счет неиспользования таймзон и поголовного хранения в utc. Вариант же без смещения вообще слаб без привязки к локали. Это как строка без кодировки: вроде бы что-то внутри есть, но осмысленные данные достать затруднительно.
P.S. HTTP, таки - без смещения:
Твоя правда, попутал с XML датой.

Кто-нибудь может точно сказать сколько времени будет в Москве ровно через 2 года?
Сколько будет в Лондоне сказать можно. А вот сколько будет в Москве - зависит от того будет ли через два года осуществляться перевод часов на летнее время, или нет. А это политический вопрос.
Сколько будет в Лондоне, сказать нельзя. Может, будет сдвиг тектонических плит, и UK переплывет в пояс GMT-1 :). И точно так же нельзя сказать про любую таймзону любой страны. Даже сама шкала UTC и то не является строго последовательной. Т.ч. с 100% надежностью можно рассчитывать интервалы только между датами в прошлом.
1. Хранить всё в UTC (имхо без смещения, т.е. в UTC+0).
Имхо, перебор. Хотя пока не могу придумать пример необходимости хранения смещения.
2. Уметь задавать пояс сервера
Зачем? Чтобы опять иметь гемор со сменами поясов или летним временем, как в начале топика? Да еще и плодить сущности: тут у нас в конфиге +3, вон там - +3.5, а тут +4, это типа летнее время, но зимой я забыл обновить конфиг.
3. Уметь отдавать время с сервера клиенту в удобной ему зоне. Разработчику порограммы может быть удобно:
a) Видеть всё только в зоне сервера.
б) Видеть всё только в зоне своей ОС.
в) Видеть всё в указанной самим клиентом зоне (естественно что на каждый коннект она может быть своя).
г) Иметь возможность менять рабочую зону без переконнекта.
д) Иметь возможность указывать рабочую зону для конкретного запроса.
а - Зачем?
б, в, г, д - разумеется.
4. Правильно обрабатывать запросы типа:
- ... where TimeStampField >= CURRENT_DATE(CLIENT_ZONE) -- чтобы получить записи за клиентское сегодня (клиентский пояс указывается в пункте 3)
- ... where TimeStampField >= CURRENT_DATE(SERVER_ZONE) -- чтобы получить записи за серверное сегодня (серверный пояс указывается в пункте 2)
- ... where TimeStampField >= CURRENT_DATE(+3) -- чтобы получить записи за (UTC+3)-шное сегодня.
1 - можно делать по умолчанию при получении типа timestamp (в случае, если по примеру Постгреса добавлять тип timestampTZ, а не заменять timestamp)
2 - в 3й раз, зачем?
3 - разумеется; только вот, имхо, надо заранее и жестко обрубить возможность задавать смещение числом. Потому что это сегодня +3. А завтра будет +4. А сегодня, но в соседнем городе, куда прогу перенесли на флешке, - +5.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38974007
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Секретное имя пользователяИнтересно еще рассмотреть вариант, когда мы сегодня записали время UTC, завтра попросили у сервера, передав ему смещение. Всё хорошо. Через некоторое кол-во лет наш часовой пояс сменился. Мы снова попросили данные за тот период, передав уже новое смещение и получили фигню-с. Впрочем, это проблемы клиента, пусть записывает и UTC, и локальное время, если ему нужны запросы по локальному.
Именно поэтому базы таймзон хранят не только текущее состояние, но и всю историю изменений. И именно поэтому зашивать в запрос константное смещение - опасно.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38974030
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-,- ... where TimeStampField >= CURRENT_DATE(SERVER_ZONE)
как я задолбался... когда же вы поймете, что если время сервера еще нужно по каким-то административным причинам, то таймзона сервера вообще никому не нужна.
У нас вообще CURRENT_TIMESTAMP возвращает сервер, потому что никаких таймзон нет. А так его мог бы возвращать КЛИЕНТ.
Представьте себе, что так и есть, и что CURRENT_* возвращает дату и время именно клиента, а не сервера, даже в хранимых процедурах и триггерах. И что случится? Да ничего.
Без клиента сервер к базам не обращается, никак и никогда.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38974060
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvего мог бы возвращать КЛИЕНТ
Дима, поумерь свои фантазии :-) Его всегда возвращал и будет возвращать сервер. Но он может это делать с учетом таймзоны клиента.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38974074
-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-
Гость
kdvУ нас вообще CURRENT_TIMESTAMP возвращает сервер, потому что никаких таймзон нет. А так его мог бы возвращать КЛИЕНТ.
Да не дай бог.
В триггере, пишущем время изменения записи, интересно именно время сервера. Я не готов полагаться на время клиента (оно почти всегда неточное). Да и пользователь банально может время перевести на компе.
А если я на клиенте генерирую текущее время (для последующей записи его в БД), то дёргаю "select current_timestamp from rdb$database". Иначе вообще не понятно как быть. Запретить пользователю переводить у себя стрелки часов я не могу.
Т.е. у меня у всех клиентов берётся только серверное время, и видят они всё только в том виде как оно на сервере лежит, даже если пользователь заходит из другого города. И это правильно в моём случае. И именно такое поведение я так полагаю у большинства. И именно его имхо нужно бы сохранить по-дефолту. Но уж если нужно чтобы пользователь видел всё в своей тайм-зоне (возможно криво установленной из-за непропатченности ОС), то тогда желательно чтобы было достаточно просто указать через FB API чтобы был использован пояс клиентской ОС, и всё бы работало. Но по дефолту хочется всё в серверном поясе видеть.

Я вот сейчас читаю sql.ru и вижу время по Москве, а не моё локальное. И тут это правильно. Причём не факт что sql.ru хостится на сервере у которого таймзона московская. Т.е. он возможно и не зависит от настроек операционки.
Зачем же нам ограничивать разработчиков на FB и администраторов?
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38974295
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-Т.е. у меня у всех клиентов берётся только серверное время, и видят они всё только в том виде как оно на сервере лежит, даже если пользователь заходит из другого города. И это правильно в моём случае. И именно такое поведение я так полагаю у большинства. И именно его имхо нужно бы сохранить по-дефолту. Но уж если нужно чтобы пользователь видел всё в своей тайм-зоне (возможно криво установленной из-за непропатченности ОС), то тогда желательно чтобы было достаточно просто указать через FB API чтобы был использован пояс клиентской ОС, и всё бы работало. Но по дефолту хочется всё в серверном поясе видеть.
Если закрепить "серверный пояс" = 0:00 - это не только будет удовлетворять всем твоим требованиям, но и будет инвариантно среди всех серверов на всех осях. Возражения?
Я вот сейчас читаю sql.ru и вижу время по Москве, а не моё локальное. И тут это правильно. Причём не факт что sql.ru хостится на сервере у которого таймзона московская. Т.е. он возможно и не зависит от настроек операционки.
Зачем же нам ограничивать разработчиков на FB и администраторов?
Ну, это означает только то, что в свойствах форума прописана по дефолту таймзона MSK. Точно так же ее можно сменить на любую другую. И это будет клиентское отображение, т.к. веб-сервер - клиент СУБД.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38974298
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати, мне прямо стало интересно: приведите хоть кто-нибудь живой пример, где
1) требуется знать таймзону сервера
2) она во что бы то ни стало не должна быть нулевой (UTC)

По мне, никакие региональные настройки машины, на которой крутится сервер, не должны влиять на его работу.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38974446
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal,

ага, ну ты понял. :-) сейчас у нас current_time это время сервера, а время клиента известно только клиенту, и как народ разруливает когда время сервера и клиента отличается, я не знаю. Пока только видел что при отличии этих "времен" вдруг начинается ужас-ужас. Откуда следует, что "серверное время" чаще используется только для синхронизации серверного времени с клиентским. А по умолчанию принимается, что время на клиенте и сервере одинаково. И париться этим вопросом в клиент-серверных приложениях начинают только когда возникает разница.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38974466
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНу тогда ты должен бы представлять себе на что это будет похоже с миллионной-то user base...Проблемы транснациональных корпрораций решает специально нанятый персонал.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38974473
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-BrutalЕсли закрепить "серверный пояс" = 0:00 - это не только будет удовлетворять всем твоим требованиям, но и будет инвариантно среди всех серверов на всех осях. Возражения?Тривиальное, в общем-то: прежде чем выдвигать гениальные идеи неплохо было бы ознакомиться с вопросом.
А то у меня начинает складываться ощущение, что FB - первое и единственное приложение, для которого возникла проблема работы датами-временем
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38974531
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-BrutalКстати, мне прямо стало интересно: приведите хоть кто-нибудь живой пример, где
У меня есть платежный шлюз, который обрабатывает запросы от разных платежных агентов.
Платежный шлюз интегрируется в биллинговой системой.
Платежный шлюз и биллинговая система находятся в GMT+3.
Платежные агенты находятся где угодно.
Платежные агенты взаимодействуют с платежным шлюзом, передавая ему информацию о транзакции: идентификатор, дата и время учета платежа, дата и время проведения платежа, сумма платежа и некоторая другая информация.
Дата и время проведения платежа — это момент, когда пользователь (клиент) осуществил платеж. Дата и время учета платежа — это момент, когда процессинговый центр подтвердил транзакцию. Некоторые платежные агенты возвращают дату и время в своем часовом поясе или в часовом поясе платежного терминала, с которого осуществлялся платеж (а для крупных систем платежные терминалы находятся в разных часовых поясах). Некоторые платежные агенты возвращают дату и время в UTC. Некоторые платежные агенты для даты и времени учета платежа используют локальный часовой пояс, а для даты и времени проведения платежа используют часовой пояс платежного терминала.
Отчеты и сверки основываются на дате и времени учета платежа. В биллинговой системе дата и время всегда указываются в часовом поясе GMT+3.
Это живой пример, когда мне на сервере нужно знать часовой пояс сервера (чтобы корректно перевести в GMT+3 для биллинговой системы), часовой пояс клиента (чтобы оператор видел отчеты в местном часовом поясе) и часовой пояс удаленной системы (чтобы правильно формировать ежедневные и ежемесячные отчеты и сверки).
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38974547
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Это живой пример... когда хранение отметок дата-время в UTC снимает кучу головной боли.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38974551
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Время приходит не в UTC, от третьих сторон.
Поэтому от хранения часового пояса и от операций со временем не уйти.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38974557
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроме того, есть резон хранить метки именно в том виде, в котором они пришли.
Например пришла транзакция с меткой 2015-06-02T18:56:12+0400.
А на сервере в этот момент время 2015-06-02T17:55:12+0300 (или 2015-06-02T14:55:12 в UTC).
То есть время на моем сервере и на удаленном сервере различается на минуту.
Тем не менее, учет будет осуществляться именно по удаленному времени, поэтому хранить нужно именно его.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38974558
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Время приходит вместе с информацией о часовом поясе. Корректной или нет, но вместе с информацией о часовом поясе.
Если заносить в базу UTC, то и биллингу и оператору время нужного часового пояса отрисует (их) клиент.
Хранить информацию о часовом поясе необходимо только для разбора конфликтных ситуаций. И это хранение может быть совершенно отдельным.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38974752
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне казалось, что я на русском языке написал.
Не только конфликтные ситуации, но и отчеты/сверки (суточные/месячные реестры и соответствующие суммы платежей и вознаграждений) формируются по дате и времени учета, которое передается платежным агентом. И часовой пояс в этой метке времени может быть любым. Если уж хранить в БД временную метку без часового пояса, то ее нужно сохранять в том виде, в котором она приходит, а не переводить в UTC. Но если в разных столбцах используется разный часовой пояс, то это хуже, чем не использовать его вовсе (всегда хранить в UTC или в локальном часовом поясе).
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38974911
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alibek B.Это живой пример, когда мне на сервере нужно знать часовой пояс сервера (чтобы корректно перевести в GMT+3 для биллинговой системы)
Сервер-то тут причем? Все, что тебе нужно знать, - это пояс биллинговой системы.
А вообще +1 к B.A.S., но тут уже всю систему надо перекраивать
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38974913
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alibek B.Дата и время проведения платежа — это момент, когда пользователь (клиент) осуществил платеж. Дата и время учета платежа — это момент, когда процессинговый центр подтвердил транзакцию.
Кстати, а зачем тебе вообще использовать время проведения? Время учета - вот что главное. А оно выставляется проц. центром, соответственно, его можно и нужно хранить в инвариантном виде.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38975123
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-BrutalСервер-то тут причем? Все, что тебе нужно знать, - это пояс биллинговой системы.
Часовой пояс сервера мне нужно знать, чтобы работать с временем платежного агента (переводить его в UTC или в пояс биллинговой системы).

Fr0sT-BrutalКстати, а зачем тебе вообще использовать время проведения? Время учета - вот что главное. А оно выставляется проц. центром, соответственно, его можно и нужно хранить в инвариантном виде.
Время проведения это информационный параметр, его можно и не использовать.
Важно именно время учета. Оно выставляется процессинговым центром.
Но процессинговые центры у разных платежных агентов разные, и часовой пояс передаваемого времени также разный. И даже у одного платежного агента теоретически могут прийти две разные транзакции с разными часовыми поясами.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38975590
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Но процессинговые центры у разных платежных агентов разные, и часовой пояс передаваемого времени также разный. И даже у одного платежного агента теоретически могут прийти две разные транзакции с разными часовыми поясами.... и всё это ситуации, наилучшее разруливание которых делает клиент или сервер приложения. Но не СУБД.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38975669
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть для получения реестра платежей предлагается забрать клиентом все транзакции, а затем делать группировку на клиенте?
Чем это лучше group by на сервере? Кроме гипотетичной сложности обработки TZ?
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38976045
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alibek B.Важно именно время учета. Оно выставляется процессинговым центром.
Но процессинговые центры у разных платежных агентов разные, и часовой пояс передаваемого времени также разный. И даже у одного платежного агента теоретически могут прийти две разные транзакции с разными часовыми поясами.
Еще одно доказательство, сколько ненужного геморроя возникает при использовании локальных времен.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38976577
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.То есть для получения реестра платежей предлагается забрать клиентом все транзакции, а затем делать группировку на клиенте?Мы, видимо, о разном. Я - о том, что клиент приводит (входящие) данные платежа к нужному виду и только после этого начинает работать с базой.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38976770
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЯ - о том, что клиент приводит (входящие) данные платежа к нужному виду и только после этого начинает работать с базой.
Нет, как раз об этом. Но с разных сторон.
Что подразумевается под привидением данных к нужному виду? Перевод в UTC и сохранение в БД? Но формирование реестров и сверки осуществляются по переданному времени учета в том часовом поясе, в котором время передавалось. Если мне пришла транзакция с отметкой 2015-06-04T02:00:00+05:00, то эта транзакция должна попасть в реестр от 4 июня. А если я эту отметку переведу в UTC 2015-06-03T21:00:00 и сохраню в БД, то при выполнении SQL-запроса в группировкой GROUP BY trunc(REQ_CLOCK, 'dd') эта запись будет отнесена к группе 2015-06-03.
Чтобы правильно выполнить группировку, сервер должен знать свой часовой пояс, а также часовой пояс платежного агента. Либо на клиент нужно загружать все транзакции, пересчитывать часовой пояс на клиенте и группировать также на клиенте.
Также можно сохранять в БД отметку времени в том виде, в котором она пришла, без часового пояса. То есть для приведенного ранее примера в БД будет сохранена отметка 2015-06-04T02:00:00. Для работы с платежными агентами этого будет достаточно. Но кроме платежных агентов у меня также есть биллинговая система, в которую нужно импортировать платежи, но время операции нужно перевести в часовой пояс биллинговой системы. Этот перевод в принципе тоже можно сделать на клиенте, но клиент должен знать часовой пояс платежного агента, часовой пояс платежного шлюза, часовой пояс биллинговой системы. На сервере это сделать проще, надежнее и быстрее.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38977619
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Чтобы правильно выполнить группировку, сервер должен знать свой часовой пояс, а также часовой пояс платежного агентаВотзадлянафига??? Достаточно, чтобы клиент отправил параметр, который сервер и использует в запросе.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38977653
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovДостаточно, чтобы клиент отправил параметр, который сервер и использует в запросе.
Можно пример? Что значит «параметр», разница в часах/минутах?
Правильный учет даты и времени — это достаточно сложно . Если это делать на клиенте, то легко допустить ошибку. Лучше работу с датой и временем осуществлять на сервере БД, на котором таких ошибок не возникнет, если сервер и его окружение правильно сконфигурированы.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38977677
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Что значит «параметр», разница в часах/минутах?Есть два способа привести мировое время к местному:
1. Указать смещение;
2. Указать (именованный) часовой пояс.
У каждого способа свои плюсы и минусы, но любой вариант позволяет серверу вести все расчёты "по времени клиента", вне зависимости от собственного часового пояса.
Сервер обязан знать собственный часовой пояс только тогда, когда он "берёт" местное время из операционной системы или тогда, когда timestamp сохранён в базу по местному времени сервера. Но второй вариант мы уже, вроде как, отбросили. Первый, для вашей задачи, вроде бы, тоже не требуется.Если это делать на клиенте, то легко допустить ошибку. Лучше работу с датой и временем осуществлять на сервере БД, на котором таких ошибок не возникнет, если сервер и его окружение правильно сконфигурированы.Вы правда не замечаете логического прокола в своих рассуждениях?
Если клиент неверно сконфигурирован, то он будет поставлять неверные исходные данные. Если искажена первичная информация, то ошибки отчётности уже малосущественны.
...
Рейтинг: 0 / 0
Текущее время с сервера
    #38977731
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЕсть два способа привести мировое время к местному:
...
но любой вариант позволяет серверу вести все расчёты "по времени клиента", вне зависимости от собственного часового пояса .
Это справедливо в том случае, если хранить в БД время в UTC.
Но если для моего случая хранить время в UTC, то я лишаюсь возможности формировать отчетные данные (суточные реестры) средствами сервера. Вернее возможность такая по прежнему есть, но воспользоваться ею будет значительно сложнее; вместо банального select ... from ... group by trunc(REQ_CLOCK, 'dd') мне нужно будет значительно усложнять запрос, приводя мировое время к часовому поясу каждой транзакции (которое может различаться даже для одного платежного агента).
Мне время учета приходит в часовом поясе агента и работать с данными мне нужно именно по этому времени и по этому часовому поясу. Поэтому чтобы избежать ненужных преобразований в UTC и обратно, лучше с данными работать в том часовом поясе, в котором они пришли.

Basil A. SidorovЕсли клиент неверно сконфигурирован, то он будет поставлять неверные исходные данные. Если искажена первичная информация, то ошибки отчётности уже малосущественны.
Не совсем так.
В цепочке обработки данных есть три участника: платежный агент (формирующий первичную информацию), платежный шлюз (скрипт, обрабатывающий первичную информацию и сохраняющий информацию в БД) и сервер БД, который эту информацию хранит.
Ответственность за правильность первичной информации лежит на платежном агенте.
А если обрабатывать данные на платежном шлюзе (приводить время к мировому), то это лишнее звено, в котором можно допустить ошибку.
Если же на платежном шлюзе время не приводить к мировому, а сохранять как есть, то искажений не будет.
...
Рейтинг: 0 / 0
101 сообщений из 101, показаны все 5 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Текущее время с сервера
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]