Время перехода в столбце Redshift varchar конвертируется в 12-часовой формат - PullRequest
0 голосов
/ 04 марта 2020

У меня есть столбец varchar в таблице красных смещений, где время хранится в 24-часовом формате, например, 17:00. Я хочу запросить таблицу и преобразовать формат в 12-часовой формат, показывающий время AM или PM. Когда я тестирую как to_char('17:00'::time,'HH12:MI AM'), он работает нормально, но когда я ставлю имя столбца вместо жестко закодированного значения, запрашивающего таблицу,

SELECT to_char(prepoll_start::time,'HH12:MI AM') 
FROM votecast.poll_hours AS ph 
WHERE ph.prepoll_start is not null 
  and state = 'AL' 
  AND tab_elec_type = 'primary'

Это не будет работать, выдает ошибку

Недопустимая операция: указанные типы или функции (по одному на каждое сообщение INFO) не поддерживаются в таблицах Redshift.;

Postgres версия 8.0.2

Пожалуйста, дайте мне знать, что делаю не так: (

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

Amazon Redshift не поддерживает тип данных TIME.

См .: Типы даты и времени - Amazon Redshift

Тем не менее, вы, похоже, поддерживаете TIME для операций, не связанных с таблицей.

Я попытался поиграть со строковыми манипуляциями, но не смог выйти за пределы ошибки, с которой вы столкнулись. Я думаю, это потому, что TIME распознается на ведущем узле, но не может работать на вычислительных узлах. (Это похоже на поведение time_series().)

Таким образом, вы не сможете использовать тип данных TIME для всего, что опирается на данные таблицы.

0 голосов
/ 04 марта 2020

Сначала я должен был создать значение метки времени из доступного времени. Затем получите время в 12-часовом формате.

select to_char( to_timestamp('1900-01-01 '||prepoll_start||':00' ,'YYYY/MM/DD HH:MI:SS') , 'HH12:MI AM') 
from votecast.poll_hours;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...