powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Получить время в определенной таймзоне
21 сообщений из 21, страница 1 из 1
Получить время в определенной таймзоне
    #38636954
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ли/планируется в Файре, получить время в определенном таймзоне?

Например друг из Китая хочет узнать время вылета из базы аэропорта в Лондоне:
Код: sql
1.
select F.DEPARTURE, F.FROM_CITY, F.DEST_CITY from FLIGHTS F


В Оракле вижу есть понятие session time zone. Тоесть до запроса выполняем "set time zone".

Еще, как получить current_timestamp в UTC?
select cast(current_timestamp as varchar(30)) from rdb$database выдает время с учетом таймзоны сервера...

Если будем делать insert into TAB (current_timestamp) то никак не будет время в UTC.

Самый оптимальный вариант думаю чтоб движок хранил все таймы в UTC.
А при коннекте клиент указывает в какой таймзоне он работает.
Или как решить по другому проблемы со временем?
...
Рейтинг: 0 / 0
Получить время в определенной таймзоне
    #38637003
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin MarcociЕще, как получить current_timestamp в UTC?
select cast(current_timestamp as varchar(30)) from rdb$database выдает время с учетом
таймзоны сервера...

Вот и выставь на сервере таймзону UTC. А в локальное время переводи при отображении
времени на клиенте.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получить время в определенной таймзоне
    #38637164
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Несерьезно... На сервере же не только Firebird крутится.
Думаю не должна зависеть "таймзона базы" от таймзоны сервера (похоже так и стандарт гласит).
Так, для задачи мы в офисе и база в офисе хватит как щас.
Все большие игроки (MySql, Oracle, Ms SQL, Postgree) решили проблему :(
...
Рейтинг: 0 / 0
Получить время в определенной таймзоне
    #38637178
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin MarcociНесерьезно... На сервере же не только Firebird крутится.
Вот это уже действительно несерьёзно. Выделите для СУБД отдельный сервер. Хотя бы виртуальный.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получить время в определенной таймзоне
    #38637247
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Дим, в принципе штука полезная. Но нафиг не нужная
...
Рейтинг: 0 / 0
Получить время в определенной таймзоне
    #38637256
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
getExactTimestampUTC() есть в стандартной библиотеке UDF.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получить время в определенной таймзоне
    #38637375
Фотография krapotkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
33.
34.
create or alter procedure LOCAL2UTC_TIME (
    LOCAL_TIME timestamp)
returns (
    UTC_TIME timestamp)
AS
declare variable ts double precision;
begin
  ts=NULL;
  utc_time=local_time;
  ts=GETEXACTTIMESTAMPUTC()-GETEXACTTIMESTAMP();
  if (ts is not null) then
  begin
--    local_time = UTC - TimeShift !!!
    UTC_TIME = local_time + ts;
  end
  suspend;
end
create or alter procedure UTC2LOCAL_TIME (
    UTC_TIME timestamp)
returns (
    LOCAL_TIME timestamp)
AS
declare variable ts double precision;
begin
  ts=NULL;
  local_time=utc_time;
  ts=GETEXACTTIMESTAMPUTC()-GETEXACTTIMESTAMP();
  if (ts is not null) then
  begin
--    local_time = UTC - TimeShift !!!
    local_TIME = utc_time - ts;
  end
  suspend;
end
...
Рейтинг: 0 / 0
Получить время в определенной таймзоне
    #38637408
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну да, через костыли можно получить в UTC из current_timestamp. Предположим что храним все в UTC зоне.
А вот чтоб отдать данные клиентам которые в разные таймзоны находится через удф будет извращние.
Очень будет кстати "set time zone" как у других конкурентов.
Но впринципе пережить можно.
...
Рейтинг: 0 / 0
Получить время в определенной таймзоне
    #38637410
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin MarcociА вот чтоб отдать данные клиентам которые в разные таймзоны находится
через удф будет извращние.
А не надо данные отдавать "через УДФ". Отдавай как есть и пусть приведением к локальному
времени занимается приложение. Ему виднее где это самое локальное время находится.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получить время в определенной таймзоне
    #38637425
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, переписать в Делфя и во всех тузлах компоненты доступа для переконвертации всех TDateTimeField полей с учетом локальной тайм зоны.
...
Рейтинг: 0 / 0
Получить время в определенной таймзоне
    #38637437
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin MarcociАга, переписать в Делфя и во всех тузлах компоненты доступа для переконвертации всех
TDateTimeField полей с учетом локальной тайм зоны.

Ага. Не надо сваливать проблемы приложения на сервер.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получить время в определенной таймзоне
    #38637453
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovDorin MarcociАга, переписать в Делфя и во всех тузлах компоненты доступа для переконвертации всех
TDateTimeField полей с учетом локальной тайм зоны.

Ага. Не надо сваливать проблемы приложения на сервер.

Ты кстати конвертируешь таймстампы при репликации из разных тайм-зон?
Если конвертируешь, то указываешь ли какие поля нужно конвертировать, а какие нужно оставить как есть?
...
Рейтинг: 0 / 0
Получить время в определенной таймзоне
    #38637455
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeТы кстати конвертируешь таймстампы при репликации из разных тайм-зон?
Разумеется нет. Бизнес-логика базы вне соей компетенции.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получить время в определенной таймзоне
    #38637465
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже будет всетаки грамотное управление таймзонами в FB4 .
...
Рейтинг: 0 / 0
Получить время в определенной таймзоне
    #38637647
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovNickDeeТы кстати конвертируешь таймстампы при репликации из разных тайм-зон?
Разумеется нет. Бизнес-логика базы вне соей компетенции.

Вот есть центральная база в Москве, и филиал во Владивостоке. Если в филиале создать документ, и сразу реплицировать его в Москву, то время создания документа будет в будущем. Потом в Москве его отредактировали (при этом прописалось время последнего изменения). И теперь по базе получается что документ создан позже, чем отредактирован.
А если при этом на таблице висит констрэйнт, что "время создания" <= "время изменения", то получаем отлуп при попытке сохранения документа в БД.
Я бы от репликатора хотел чтобы он позаботился о переводе таймстампов из одной зоны в другую, причём только для указанных мной полей.
Хотя идеальным был бы новый тип в FB, хранящий TimeStamp в UTC :)
...
Рейтинг: 0 / 0
Получить время в определенной таймзоне
    #38637650
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeХотя идеальным был бы новый тип в FB, хранящий TimeStamp в UTC :)
А что тебе мешает хранить TimeStamp в UTC в старом типе?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получить время в определенной таймзоне
    #38637654
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovNickDeeХотя идеальным был бы новый тип в FB, хранящий TimeStamp в UTC :)
А что тебе мешает хранить TimeStamp в UTC в старом типе?..

Если бы к базе цеплялся только я, то я бы смог решить проблему с автоматическим переводом в UTC и обратно просто пропатчив компоненты доступа. Но с базой работает ещё и 1С.
Ну и IBExpert-то так не пропатчишь :)
...
Рейтинг: 0 / 0
Получить время в определенной таймзоне
    #38637660
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeЕсли бы к базе цеплялся только я, то я бы смог решить проблему с
автоматическим переводом в UTC и обратно просто пропатчив компоненты доступа. Но с базой
работает ещё и 1С.
Ну и IBExpert-то так не пропатчишь :)
А зачем тебе переводить время в UTC и обратно? Уверяю тебя, люди во Владивостоке давно
привыкли жить под гнётом московского времени. Так что если и твоя программа, и 1С, и
IBExpert будут показывать исключительно московское время, дополнительных проблем у них уже
не возникнет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получить время в определенной таймзоне
    #38637668
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovА зачем тебе переводить время в UTC и обратно? Уверяю тебя, люди во Владивостоке давно
привыкли жить под гнётом московского времени. Так что если и твоя программа, и 1С, и
IBExpert будут показывать исключительно московское время, дополнительных проблем у них уже
не возникнет.

Во временном поясе Москвы у системы нет ни одного сервера. Всё в регионах.
И у моих пользователей нет проблем с временными зонами, т.к. при реализации репликации я учёл временной пояс сервера. А пользователи находятся в тайм-зонах серверов. У меня там всё хорошо.
Но если бы был один сервер на все регионы, тогда пришлось бы городить огород.
...
Рейтинг: 0 / 0
Получить время в определенной таймзоне
    #38663300
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Идеологически относительно собственных БД:
+1 за хранение всех времён в UTC.
Реквестно относительно ФБ:
+1 за получение current_timestamp в UTC без UDF и нагромождений.
Получение таймстампов от сервера прозрачно в собственной таймзоне... довольно соблазнительно, пожалуй, плюсую.

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

По отображению:
Клиенты могут устанавливать собственную таймзону через rdb$set_context; правда, тогда все выборки полей дат придется делать через ХП или вьюшки. Плюс update/insert тоже надо будет обрабатывать отдельно.
Можно еще попробовать в прогах повесить Field.OnGetText, Field.OnChange, но это только если есть исходники и активные разработчики)).
...
Рейтинг: 0 / 0
Получить время в определенной таймзоне
    #38663306
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dorin MarcociНапример друг из Китая хочет узнать время вылета из базы аэропорта в Лондоне:
А пример не катит, время вылета всегда во временном поясе точки отправления пишется, и всех устраивает вполне
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Получить время в определенной таймзоне
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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