2016-11-18 10 views
0

Image У меня есть таблица, содержащая следующие две колонки:Как преобразовать столбцы времени и смещения в один столбец timestamptz?

  • timestampwithouttimezone (типа TIMESTAMP WITHOUT TIME ZONE)
  • utcoffset (типа INTEGER)

Я хочу, чтобы преобразовать эти два столбца в один один из типов TIMESTAMP с временной зоной. Можно ли это сделать с помощью запроса ALTER TABLE ALTER COLUMN [column] SET DATE TYPE TIMESTAMP WITH TIME ZONE и дополнительного предложения USING?

Или мне нужен отдельный запрос UPDATE, который принимает смещение и устанавливает часовой пояс временных меток? Если это так, каков будет этот запрос? Я не могу найти примеры, показывающие, как обновить часовой пояс, используя целое число.

+1

Вы знаете, что 'временная метка с течением времени zone' делает ** не ** сохранить первоначальный часовой пояс? –

ответ

1

Вы можете сделать это, как это, предполагая, что смещение в часах:

ALTER TABLE mytab 
    ALTER timestampwithouttimezone 
     TYPE timestamp with time zone 
     USING CAST (timestampwithouttimezone::text || ' ' 
        || to_char(utcoffset, 'S00FM') 
        AS timestamp with time zone), 
    DROP utcoffset; 
+0

'... используя timestampwithouttimezone в часовом поясе utcoffset :: text'? – Abelisto

+0

Да, это тоже должно работать. –

 Смежные вопросы

  • Нет связанных вопросов^_^