Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите с датами разобратся... / 5 сообщений из 5, страница 1 из 1
22.05.2003, 11:23:27
    #32165876
AlexNS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с датами разобратся...
Есть Oracle 9.2. Стоит на Линюхе. На сервере регистряца события с датой/временем по гринвичу. Мне надо показывать людям с переводом в местное время С УЧЕТОМ ЛЕТНЕГО/ЗИМНЕГО периода. Собсно в свой часовой пояс переводится легко а вот метод простого и быстрого(по возможности встроенного в Ораклю) учета летнего/зимнего времени найти не могу. Мона конечно ручками процу написать - но думаю что быду делать свой велосипед кривой. А наверняка в Оракле под это дело Мерседес имеется ?
...
Рейтинг: 0 / 0
22.05.2003, 12:23:42
    #32165979
hinotf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с датами разобратся...
Для типов ..with timezone переход на летнее-зимнее время учитыватеся форматными масками, например

SELECT to_char(to_timestamp_tz('27.10.2002 02:00:00 Europe/Moscow MSK', 'DD.MM.RRRR HH24:MI:SS TZR TZD') -
to_timestamp_tz('27.10.2002 02:00:00 Europe/Moscow MSD', 'DD.MM.RRRR HH24:MI:SS TZR TZD'))
FROM dual
...
Рейтинг: 0 / 0
22.05.2003, 13:37:35
    #32166116
AlexNS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с датами разобратся...
Про эти новые типы дат в 9 ке я так особо ничего не знаю. Вот так сходу зная что такое дата, и то что есть тип TIMESTAMP WITH TIME ZONE - но реально с ним не работав, никак не могу придумать как бы это дело срастить. Можно я вопрос конкретизирую. Подскажи если не лень :
У меня есть переменная типа дата. Она имеет значение например равное 01/06/2003 13:00. Это время события по гринвичу. Я знаю что клиент сидит в Москве и разница с гринвичем 3 часа. Как бы мне выбирать эту переменную так что бы Оракле показал мне дату и время этого события по Москве и при этом учел что событие произошло летом (когда разница по времени в Москве и по гринвичу составляет 4 часа). То есть - 01/06/2003 17:00. А если например событие произошло 01/01/2003 13:00(зимой) то что бы в результате получилось 01/06/2003 16:00. И очень желательно что бы результат имел тип Date.
...
Рейтинг: 0 / 0
22.05.2003, 14:19:02
    #32166171
hinotf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с датами разобратся...
Я тоже не очень в этом разбираюсь, НО! есть специальный тип данных TIMESTAMP WITH LOCAL TIME ZONE. В базе данных он всегда хранит дату с тем часовым поясом, который установлен на сервере (ALTER DATABASE SET TIME_ZONE = 'Europe/London') например, а выводит, приводя к часовому поясу клиента (ALTER SESSION SET TIME_ZONE = 'Europe/Moscow')

Полезные команды, помимо уже упомянутых выше установок часовых поясов:

select dbtimezone from dual

select sessiontimezone from dual

SELECT * FROM v$timezone_names

по-моему, использование этого типа очень оправдано в вашем случае
...
Рейтинг: 0 / 0
22.05.2003, 14:23:48
    #32166181
hinotf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с датами разобратся...
PS по проведённым мной экспериментам, переход на летнее/зимнее время учитывается, то есть вообще ничего, кроме правильного выставленного часового пояса на сервере и клиенте, делать не надо
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите с датами разобратся... / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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