#postgresql
#postgresql
Вопрос:
Как преобразовать приведенный ниже SQL в PostgreSQL
select sysdate, CAST(sysdate AS TIMESTAMP),
from_tz(CAST(sysdate AS TIMESTAMP), 'Australia/Darwin'),
from_tz(CAST(sysdate AS TIMESTAMP), 'Australia/Darwin') AT TIME ZONE 'America/New_York'
from dual
Ответ №1:
Ближайший, вероятно, что-то вроде этого:
select localtimestamp,
localtimestamp at time zone 'Australia/Darwin',
localtimestamp at time zone 'Australia/Darwin' at time zone 'America/New_York';
localtimestamp
по сути, это то же самое, что и оба: sysdate
и cast(sysdate as timestamp)
в Oracle. Не уверен, каково намерение в исходном запросе.
Комментарии:
1. Спасибо. Здесь, в PostgreSQL, он изменил компонент времени, но в oracle он его не меняет (26.08.2020, 7:17:17.000000 УТРА 09:30). возможно ли это в PostgreSQL?
2. @Ram: понятия не имею, что вы имеете в виду, он, безусловно, возвращает три разных компонента времени: dbfiddle.uk /… но без более подробной информации о том, чего должен достичь этот запрос, это действительно сложно сказать.
3. в oracle ПРИВЕДИТЕ (SYSDATEASTIMESTAMP) = 26-20 АВГУСТА 01.05.09.000000 часов вечера и FROM_TZ(ПРИВЕДИТЕ (SYSDATEASTIMESTAMP), ‘АВСТРАЛИЯ / ДАРВИН’) = 26-20 АВГУСТА 01.05.09.000000 часов ВЕЧЕРА АВСТРАЛИЯ / ДАРВИН , если вы видите там, что компонент времени остается неизменным и добавляет часовой пояс . Мне нужно было то же самое в PostgreSQL.
4. Вы находитесь в этом часовом поясе? Затем просто используйте
current_timestamp
в Postgres