Преобразование oracle.sql.timestamptz в метку времени postgresql с часовым поясом

Извините, но я нуб и мне нужен ваш совет. У меня есть набор результатов от оракула с временной меткой, я получаю строковое значение этой временной метки, например

2014-1-10 13.47.56.0 7:0

а затем мне нужно поместить его в postgresql-запрос в некоторой функции, которая принимает временную метку с часовым поясом. Как я могу преобразовать эту строку в метку времени с часовым поясом в java? Я пытался сделать что-то похожее на TO_TIMESTAMP_TZ("2014-1-10 13.47.32.0 7:0","YYYY-MM-DD HH24:MI:SS.FF TZH:TZM"), но у меня это не сработало. Помоги мне, пожалуйста.


person mechanikos    schedule 11.08.2014    source источник


Ответы (1)


Я не знаю функции TO_TIMESTAMP_TZ() в Postgres. Вероятно, вы имеете в виду to_timestamp().

Я также не знаю шаблона Patterns TZH:TZM. Вы можете использовать конструкцию AT TIME ZONE.

И данные заключаются в одинарные кавычки; двойные кавычки для идентификаторов.

Это работает для меня:

SELECT to_timestamp('2014-1-10 13.47.32.0', 'YYYY-MM-DD HH24:MI:SS.MS')::timestamp
       AT TIME ZONE '-7:0';  -- shift back

Было бы разумнее выводить метки времени в формате ISO 8601 с TZR (регион часового пояса) в Oracle, что менее двусмысленно. Подробности в руководстве по Oracle.

Или еще лучше, временные метки UTC (без смещения 0), которые вы можете преобразовать в timestamptz непосредственно в Postgres:

SELECT '2014-01-10 06:47:32+0'::timestamptz;

Или эпохи UNIX, которые можно передать во вторую форму to_timestamp().

SELECT to_timestamp(1389336452);

Подробности о метках времени в Postgres:

person Erwin Brandstetter    schedule 11.08.2014
comment
Спасибо, и извините за другие нубские вопросы. могу ли я использовать эту конструкцию в аргументах какой-либо функции postgresql? и есть ли способ сделать это без разделения моей входной строки? - person mechanikos; 11.08.2014
comment
@mechanikos: я бы экспортировал временные метки UTC в формате ISO 8601 из Oracle, чтобы избежать путаницы. Или эпохи UNIX. Я добавил еще немного. - person Erwin Brandstetter; 11.08.2014