Преобразовать приведенный ниже SQL в PostgreSQL

#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