powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Firebird 4 - получить timezone сессии?
44 сообщений из 44, показаны все 2 страниц
Firebird 4 - получить timezone сессии?
    #39825090
alex deeep
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как на сервере FB4 определить из какой временной зоны работает пользователь? Можно как-то в event CONNECT или TRANSACTION START определить таймзону или хотя бы время пользователя? Или только вариант после подключения в контекст сессии записать то, что прислал клиент? В нэймспейсах ничего нового в этом направлении нет.
И если клиент делает set time zone 'America/Sao_Paulo'; как на сервере определить, что клиент сменил таймзону?
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39825107
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем ? В чём задача состоит ?
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39825256
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex deeep, по моему, от этого абсолютно никакого профита, так как пользователь может поменять часовой пояс вручную или ОС пользователя может автоматически изменить часовой пояс при смене пользователем геолокации, либо при смене IP адреса ОС решит, что пользователь сменил геолокацию, если геолокация пользователя включена только по IP. Море факторов!

Ты не можешь контролировать ни правильность часового пояса, ни правильность локального времени. Тогда как на своём сервере, время которого синхронизировано, например, с "Государственным первичным эталоном времени РФ" через NTP серверы ВНИИ ФТРИ или через NTP сервер с синхронизацией по ГЛОНАСС и прописав в триггерах до обновления назначение текущего времени для интересующих тебя полей, ты будешь иметь в этих полях непротиворечивое время.
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39825479
alex deeep
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В целом пока интересуюсь этим вопросом только в связи с задачей журналирования операций пользователей. Сейчас в каждой таймзоне у нас свой сервер и журнал операций заполняется значениями с localtime. С переходом на fb4 появляется возможность собрать все региональные базы в одну, и показалось заманчивым иметь возможность журналировать операции не только по времени сервера, но и по времени клиента. А то придется принимать во внимание и вычислять для отображения, что новосибиские заказы последний раз редактировались пользователем из Новосибирска не в 5:00 (МСК), а в 9:00 (НВС).
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39825485
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex deeep,

ну так в самом таймстампе будет стоять таймзона того сервера, где выполнялся current_time\current_datetime
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39825486
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex deeepА то придется принимать во внимание и вычислять для отображения, что новосибиские заказы последний раз редактировались пользователем из Новосибирска не в 5:00 (МСК), а в 9:00 (НВС).5 утра по Москве и 9 дня по Новосибирску, это тоже самое время, которое будет хранится на сервере по UTC, а на клиенте оно уже будет приведено к локальному времени клиента с учётом часового пояса.
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39825488
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladalex deeep,
ну так в самом таймстампе будет стоять таймзона того сервера, где выполнялся current_time\current_datetimeРазве таймзона хранится вместе со штампом времени? Я в полной уверенности, что таймзона используется сервером только для вычисления штампа времени по UTC и клиентом для приведения полученного от сервера штампа времени к времени таймозны клиента.
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39825493
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devhvladalex deeep,
ну так в самом таймстампе будет стоять таймзона того сервера, где выполнялся current_time\current_datetimeРазве таймзона хранится вместе со штампом времени? Я в полной уверенности, что таймзона используется сервером только для вычисления штампа времени по UTC и клиентом для приведения полученного от сервера штампа времени к времени таймозны клиента.Ми пардон! Я заблуждался.

TIME/TIMESTAMP WITH TIME ZONE has respectively the same storage of TIME/TIMESTAMP WITHOUT TIME ZONE plus 2 bytes for the time zone identifier or displacement.

The time/timestamp parts are stored in UTC (translated from the informed time zone).

Time zone identifiers (from regions) are put directly in the time_zone field. They start from 65535 (which is the GMT code) and are decreasing as new time zones were/are added.

Time zone displacements (+/- HH:MM) are encoded with `(sign * (HH * 60 + MM)) + 1439`. For example, a `00:00` displacement is encoded as `(1 * (0 * 60 + 0)) + 1439 = 1439` and `-02:00` as `(-1 * (2 * 60 + 0)) + 1439 = 1319`.
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39825503
alex deeep
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladalex deeep,

ну так в самом таймстампе будет стоять таймзона того сервера, где выполнялся current_time\current_datetime
Так сервер же будет один для всех регионов. Поэтому current_time для триггеров/процедур будет всегда московский (в моем случае).
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39825508
alex deeep
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_dev5 утра по Москве и 9 дня по Новосибирску, это тоже самое время, которое будет хранится на сервере по UTC, а на клиенте оно уже будет приведено к локальному времени клиента с учётом часового пояса.
Пользователи центрального офиса имеют доступ ко всем региональным заказам и им важно понимать, когда кто менял заказ по локальному времени региона, а не по времени центрального офиса. Это значит нужно приводить время к нужному часовому поясу по информации о пользователе.
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39825509
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex deeepТак сервер же будет один для всех регионов. Поэтому current_time для триггеров/процедур
будет всегда московский (в моем случае).

Только если это коннект через терминальный сервер. При нормальном коннекте с нормального
клиента там будет часовой пояс клиента насколько я в курсе.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39825514
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex deeephvladalex deeep,

ну так в самом таймстампе будет стоять таймзона того сервера, где выполнялся current_time\current_datetime
Так сервер же будет один для всех регионов. Поэтому current_time для триггеров/процедур будет всегда московский (в моем случае).

Зависит от приложения
doc\sql.extensions\README.time_zone.mdSET TIME ZONE statement
Changes the session time zone.

Syntax
SET TIME ZONE { <time zone string> | LOCAL }
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39825517
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovПри нормальном коннекте с нормального
клиента там будет часовой пояс клиента насколько я в курсе.Я не вижу, чтобы этот тег вставлялся fbclient'ом самостоятельно
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39825518
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЯ не вижу, чтобы этот тег вставлялся fbclient'ом самостоятельно

Действительно. Хотя по идее должен бы. И вроде бы это даже обсуждалось в девеле.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39825529
alex deeep
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ага, прочитал внимательно еще раз
In version 4.0, CURRENT_TIME and CURRENT_TIMESTAMP now return TIME WITH TIME ZONE and
TIMESTAMP WITH TIME ZONE, with the time zone set by the session time zone
Теперь еще тучу процедур и триггеров пересматривать, которые ориентированы на то, что CURRENT_TIMESTAMP returns the current server date and time.

А где теперь, простите, серверное время?
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39825530
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex deeeprdb_dev5 утра по Москве и 9 дня по Новосибирску, это тоже самое время, которое будет хранится на сервере по UTC, а на клиенте оно уже будет приведено к локальному времени клиента с учётом часового пояса.
Пользователи центрального офиса имеют доступ ко всем региональным заказам и им важно понимать, когда кто менял заказ по локальному времени региона, а не по времени центрального офиса. Это значит нужно приводить время к нужному часовому поясу по информации о пользователе.Попробуй это:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
EXECUTE BLOCK
RETURNS
(
  ret TIMESTAMP WITH TIME ZONE,
  disp_hour SMALLINT,
  disp_minute SMALLINT
)
AS
  DECLARE VARIABLE tmstmp_notz TIMESTAMP WITHOUT TIME ZONE;
BEGIN
  tmstmp_notz = CURRENT_TIMESTAMP AT TIME ZONE 'Asia/Krasnoyarsk';
  ret = tmstmp_notz;
  disp_hour = Extract(TIMEZONE_HOUR FROM ret);
  disp_minute = Extract(TIMEZONE_MINUTE FROM ret);
  SUSPEND;
  ret = tmstmp_notz AT TIME ZONE 'UTC';
  disp_hour = Extract(TIMEZONE_HOUR FROM ret);
  disp_minute = Extract(TIMEZONE_MINUTE FROM ret);
  SUSPEND;
  ret = tmstmp_notz AT TIME ZONE 'Asia/Krasnoyarsk';
  disp_hour = Extract(TIMEZONE_HOUR FROM ret);
  disp_minute = Extract(TIMEZONE_MINUTE FROM ret);
  SUSPEND;
  ret = tmstmp_notz AT TIME ZONE 'Europe/Moscow';
  disp_hour = Extract(TIMEZONE_HOUR FROM ret);
  disp_minute = Extract(TIMEZONE_MINUTE FROM ret);
  SUSPEND;
  ret = tmstmp_notz AT LOCAL;
  disp_hour = Extract(TIMEZONE_HOUR FROM ret);
  disp_minute = Extract(TIMEZONE_MINUTE FROM ret);
  SUSPEND;
END
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39825587
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex deeepА где теперь, простите, серверное время?LOCALTIME
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39825609
alex deeep
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladalex deeepА где теперь, простите, серверное время?LOCALTIME
А вот и нет...

C:\Program Files\Firebird\Firebird_4_0>isql
Use CONNECT or CREATE DATABASE to specify a database
SQL> connect e:\test\test.fdb user SYSDBA password masterkey;
Database: e:\test\test.fdb, User: SYSDBA
SQL> SELECT localtime, current_time FROM RDB$DATABASE;

LOCALTIME CURRENT_TIME
============= ==============================================
21:44:47.0000 21:44:47.0000 Europe/Moscow

SQL> set time zone 'Asia/Novosibirsk';
SQL> SELECT localtime, current_time FROM RDB$DATABASE;

LOCALTIME CURRENT_TIME
============= ==============================================
01:45:15.0000 01:45:15.0000 Asia/Novosibirsk
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39825615
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, так не получится.
А вот через гланды - всё же можно.

Сначала

Код: sql
1.
2.
select RDB$SET_CONTEXT('USER_SESSION', 'TZ', extract(TIMEZONE_HOUR from current_time)) 
  from rdb$database;



Далее
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
create or alter function fn_localTime
  returns time
as
begin
  execute statement ('set time zone ''' || RDB$GET_CONTEXT('USER_SESSION', 'TZ') || '''');
  return localtime;
  set time zone local;
end



Ну и проверка
Код: sql
1.
2.
3.
4.
select fn_localTime(), localTime from rdb$database;

set time zone 'UTC';
select fn_localTime(), localTime from rdb$database;
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39825616
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С другой стороны - а зачем ?
Задавай правила на сервере с использованием 'Asia/Novosibirsk' (если так хочется) - и всё
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39826183
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чуточку офтопну в этом топике, иначе у меня "новая тема" опять в "Пятницу" улетит.

Наткнулся со штампами времени на несколько довольно странных, э-э-э... Багов? Не очень понимаю, с чем это может быть связано.

1. Приведения строки '0001-01-01 00:00:00.100 UTC' с часовым поясом к TIMESTAMP WITH TIME ZONE валит ошибку 'expression evaluation not supported. value exceeds the range for valid timestamps.'
Не работает:
Код: plsql
1.
2.
SELECT Cast('0001-01-01 00:00:00.100 UTC' AS TIMESTAMP WITH TIME ZONE) AT TIME ZONE 'Europe/Moscow'
  FROM oneRow


Работает (выдаёт значение 97 !):
Код: plsql
1.
2.
3.
4.
SELECT Extract(HOUR FROM Cast(
      '0001-01-01 00:00:00.100 UTC' AS TIMESTAMP WITH TIME ZONE
    ) AT TIME ZONE 'Europe/Moscow')
  FROM oneRow


Работает:
Код: plsql
1.
SELECT Cast('0001-01-01 00:00:00.100' AS TIMESTAMP WITHOUT TIME ZONE) FROM oneRow



2. Слишком большие различия при расчёте в DATEDIFF через дни и через миллисекунды.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
EXECUTE BLOCK
  RETURNS
  (
    dayz_chk BIGINT,
    dayz DOUBLE PRECISION,
    ahead_chk TIMESTAMP WITHOUT TIME ZONE,
    back_chk TIMESTAMP WITHOUT TIME ZONE
  )
AS
  DECLARE VARIABLE ts TIMESTAMP WITHOUT TIME ZONE;
BEGIN
  ts = Cast('Now' AS TIMESTAMP WITHOUT TIME ZONE);
  dayz_chk = DATEDIFF(DAY
      FROM Cast('0001-01-01 00:00:00.100' AS TIMESTAMP WITHOUT TIME ZONE)
      TO ts);
  dayz = Cast(DATEDIFF(MILLISECOND
      FROM Cast('0001-01-01 00:00:00.100' AS TIMESTAMP WITHOUT TIME ZONE)
      TO ts AT TIME ZONE 'UTC') AS DOUBLE PRECISION) / 86400000;
  ahead_chk = '0001-01-01 00:00:00.100';
  ahead_chk = ahead_chk + dayz;
  back_chk = ts - dayz;
  SUSPEND;
END
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39826199
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

где в это время была Москва? Что тебе даст аналогичный эксперимент например в Яве?
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39826200
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя, если в строке:
Код: plsql
1.
2.
3.
  dayz = Cast(DATEDIFF(MILLISECOND
      FROM Cast('0001-01-01 00:00:00.100' AS TIMESTAMP WITHOUT TIME ZONE)
      TO ts AT TIME ZONE 'UTC') AS DOUBLE PRECISION) / 86400000;

у 'ts' убрать AT TIME ZONE 'UTC', несоответствие уходит.
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39826202
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисrdb_dev,

где в это время была Москва? Что тебе даст аналогичный эксперимент например в Яве?Какая разница, где была Москва, если 'Europe/Moscow', это, всего лишь, идентификатор часового пояса UTC+3? Или в Рождество Христово планета Земля на время остановила своё вращение?
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39826204
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

в это время вообще часовых поясов не существовало если что. В базе часовых поясов у любой тайм-зоны есть дата начала и дата окончания для смещения. Возьми и выведи все существующие смещения для Europe/Moscow может тогда поймёшь откуда такая фигня вылезла.
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39826206
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис, не существовало ПОНЯТИЯ часовых поясов, но так как жители населённых пунктов определяли время по солнцу, разница во времени, всё же, была, что очевидно.
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39826221
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devразница во времени, всё же, была, что очевидно.

А для тебя неочевидно, что эта разница устанавливается и закрепляется постановлениями
правительств? Считай, что допустимые значения для типов с часовым поясом начинаются с
1970-х, не раньше.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39826236
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovrdb_devразница во времени, всё же, была, что очевидно.
А для тебя неочевидно, что эта разница устанавливается и закрепляется постановлениями
правительств? Считай, что допустимые значения для типов с часовым поясом начинаются с
1970-х, не раньше.По твоему, это должно влиять на методы расчётов от/к штампу времени в конкретной географической точке?
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39826237
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devНе работает:
Код: plsql
1.
2.
SELECT Cast('0001-01-01 00:00:00.100 UTC' AS TIMESTAMP WITH TIME ZONE) AT TIME ZONE 'Europe/Moscow'
  FROM oneRow

Не было ни Europe, ни, тем более Moscow в этом году.
Хочешь выёживаться с такими датами - используй явно заданное смещение, например '+3:00'
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39826245
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devПо твоему, это должно влиять на методы расчётов от/к штампу времени в конкретной
географической точке?

Да. Ты, надеюсь, не забыл про "летнее время" и его свистопляску?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39826247
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovДа. Ты, надеюсь, не забыл про "летнее время" и его свистопляску?Это вообще тихий ужас! Поэтому имеет смысл только штамп времени UTC, который не зависит от таких переходов.
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39826283
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devКакая разница, где была Москва, если 'Europe/Moscow', это, всего лишь, идентификатор часового пояса UTC+3?Грубое заблуждение.
Идентификатор часового пояса это сдвиг "от Гринвича" И правила перехода на зимнее-летнее время.
UTC+3 - ни разу не эквивалент Europe/Moscow
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39826378
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovИдентификатор часового пояса это сдвиг "от Гринвича" И правила перехода на зимнее-летнее время.
UTC+3 - ни разу не эквивалент Europe/MoscowСейчас эквивалент, пока в голову какому-нибудь деятелю опять не пришла в голову мысль вернуть переход на зимнее и летнее время.
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39826411
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё на одну "фичу" наткнулся:
Код: plsql
1.
2.
3.
SET TIME ZONE 'UTC';
SELECT Cast(1 AS BIGINT) AS seq, CURRENT_TIMESTAMP FROM oneRow
UNION SELECT 2, Cast('Now' AS TIMESTAMP WITH TIME ZONE) FROM oneRow;
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39826426
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devСейчас эквивалент, пока в голову какому-нибудь деятелю опять не пришла в голову мысль вернуть переход на зимнее и летнее время.А в date'0001-01-01' - не эквивалент. И ещё в кучке интервалов, когда менялся и сдвиг относительно мирового времени или/и когда менялись правила перехода зимнее-летнее время.

P.S.
Поставишь союз "и", выделишь его И шрифтом И регистром - нет, всё равно найдётся э-э-э... умник, который считает, что он уже во всём разобрался и проникся дзеном.
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39826447
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovА в date'0001-01-01' - не эквивалент. И ещё в кучке интервалов, когда менялся и сдвиг относительно мирового времени или/и когда менялись правила перехода зимнее-летнее время.Ой, да брось! Вращение Земли никто не отменял и если спроецировать сегодняшнее понятия "Линия перемены дат" и/или "Гринвичский меридиан" на '0001-01-01', то относительно этих современных понятий, расчёты даты и времени не дадут какой-либо серьезной погрешности в каком-либо часовом поясе без учёта перехода на "зимнее время", которое, обычно, уменьшает время в часовом поясе на один час и которым, в некоторых случаях, можно пренебречь.
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39826449
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

научись отличать географию (+3) от политики (Europe\Moscow).
Первая не меняется.
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39826450
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devбез учёта перехода на "зимнее время"Переходят на летнее время, узнай уже хоть что-нибудь.
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39826456
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev,

успокойся уже. Всяческие переходы на зимнее/летнее время в нашей стране ввёл Ленин до этого никаких переходов не было.

Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT
    START_TIMESTAMP,
    END_TIMESTAMP,
    ZONE_OFFSET,
    DST_OFFSET,
    EFFECTIVE_OFFSET
FROM RDB$TIME_ZONE_UTIL.TRANSITIONS('Europe/Moscow', '01.01.0001 UTC', CURRENT_TIMESTAMP) TZ  
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39826463
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladrdb_dev,

научись отличать географию (+3) от политики (Europe\Moscow).
Первая не меняется.Вот сам и научись! 'Europe/Moscow' это идентификатор из справочника часовых поясов IANA Time Zone Database , обозначающий часовой пояс UTC+3, и который никакого отношения к политике и административному делению на часовые пояса внутри государства не имеет, а скорее наоборот. К "политике" же относится правило UTC DST - Daylight Saving Time rule .
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39826475
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devВот сам и научись! 'Europe/Moscow' это идентификатор из справочника часовых поясов IANA Time Zone Database , обозначающий часовой пояс UTC+3, и который никакого отношения к политике и административному делению на часовые пояса внутри государства не имеет
цитата из первоисточникаtzdata2019a/europe:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
# From Vladimir Karpinsky (2014-07-08):
# LMT in Moscow (before Jul 3, 1916) is 2:30:17, that was defined by Moscow
# Observatory (coordinates: 55° 45' 29.70", 37° 34' 05.30")....
# LMT in Moscow since Jul 3, 1916 is 2:31:01 as a result of new standard.
# (The info is from the book by Byalokoz ... p. 18.)
# The time in St. Petersburg as capital of Russia was defined by
# Pulkov observatory, near St. Petersburg.  In 1916 LMT Moscow
# was synchronized with LMT St. Petersburg (+30 minutes), (Pulkov observatory
# coordinates: 59° 46' 18.70", 30° 19' 40.70") so 30° 19' 40.70" >
# 2h01m18.7s = 2:01:19.  LMT Moscow = LMT St.Petersburg + 30m 2:01:19 + 0:30 =
# 2:31:19 ...
#
# From Paul Eggert (2014-07-08):
# Milne does not list Moscow, but suggests that its time might be listed in
# Résumés mensuels et annuels des observations météorologiques (1895).
# Presumably this is OCLC 85825704, a journal published with parallel text in
# Russian and French.  This source has not been located; go with Karpinsky.

Zone Europe/Moscow	 2:30:17 -	LMT	1880
			 2:30:17 -	MMT	1916 Jul  3 # Moscow Mean Time
			 2:31:19 Russia	%s	1919 Jul  1  0:00u
			 3:00	Russia	%s	1921 Oct
			 3:00	Russia	MSK/MSD	1922 Oct
			 2:00	-	EET	1930 Jun 21
			 3:00	Russia	MSK/MSD	1991 Mar 31  2:00s
			 2:00	Russia	EE%sT	1992 Jan 19  2:00s
			 3:00	Russia	MSK/MSD	2011 Mar 27  2:00s
			 4:00	-	MSK	2014 Oct 26  2:00s
			 3:00	-	MSK
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39826476
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_dev'Europe/Moscow' это идентификатор из справочника часовых поясов IANA Time Zone Database , обозначающий часовой пояс UTC+3, и который никакого отношения к политике и административному делению на часовые пояса внутри государства не имеет Вот тут я неправ!
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39826478
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov, эта цитата из первоисточника более понятна:
Timezone identifiers
The naming conventions attempt to strike a balance among the following goals:

*Uniquely identify every timezone where clocks have agreed since 1970. This is essential for the intended use: static clocks keeping local civil time.
*Indicate to experts where the timezone's clocks typically are.
*Be robust in the presence of political changes. For example, names are typically not tied to countries, to avoid incompatibilities when countries change their name (e.g., Swaziland→Eswatini) or when locations change countries (e.g., Hong Kong from UK colony to China). There is no requirement that every country or national capital must have a timezone name.
*Be portable to a wide variety of implementations.
*Use a consistent naming conventions over the entire world.

Names normally have the form AREA/LOCATION, where AREA is a continent or ocean, and LOCATION is a specific location within the area. North and South America share the same area, 'America'. Typical names are 'Africa/Cairo', 'America/New_York', and 'Pacific/Honolulu'. Some names are further qualified to help avoid confusion; for example, 'America/Indiana/Petersburg' distinguishes Petersburg, Indiana from other Petersburgs in America.
...
Рейтинг: 0 / 0
Firebird 4 - получить timezone сессии?
    #39826483
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devВот тут я неправ!И не только тут.
Деление на регионы сугубо политическое и часто не имеет отношения ни к географии, ни к здравому смыслу.
...
Рейтинг: 0 / 0
44 сообщений из 44, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Firebird 4 - получить timezone сессии?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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