aigr
Дата: 19.11.2009 16:12:41
Дано: Время в БД хранится в UTC в поле типа date, пользователю выдается в местном времени
select cast((to_timestamp_tz('22.10.2009 00:00:00 0','dd.mm.yyyy hh24:mi:ss TZH')) at time zone 'Asia/Novosibirsk' as date),
cast((to_timestamp_tz('22.11.2009 00:00:00 0','dd.mm.yyyy hh24:mi:ss TZH')) at time zone 'Asia/Novosibirsk' as date)
from dual;
Но, пользователь в отчете запрашивает данные в местном времени и для подстановки в запрос его дату надо перевести в UTC. Если речь идет о текущей дате, то все понятно . есть полезная ссылочка
http://www.sql.ru/forum/actualthread.aspx?tid=274540
Но проблема в том, что пользователь он может ввести любую дату. А как определить какое в этот момент было смещение от UTC? Тупо по определению если дата после цатого марта и до цатого октября? или есть более гуманные способы?
aigr
Дата: 19.11.2009 18:28:46
прошу прощения, с ларем разобрались
ответ вот тут
http://www.sql.ru/forum/actualthread.aspx?tid=392482&hl=%eb%e5%f2%ed%e5%e5+%e2%f0%e5%ec%ff
with A as
(
select cast(to_date('23.10.2009','dd.mm.yyyy') as timestamp) t from dual
union all
select cast(to_date('23.11.2009','dd.mm.yyyy') as timestamp) from dual
)
select from_tz(a.t,'Europe/Moscow' ) at time zone 'UTC'
from a;