Существуют ли ограничения на преобразование или преобразование столбца временной метки в time в базе данных redshift без часового пояса?

#amazon-redshift

#amazon-redshift

Вопрос:

Я работаю с базой данных Amazon Redshift с использованием Postgresql. У меня есть столбец временных меток, который мне нужно преобразовать в just time. Я использовал следующую строку для определения свойств столбца:

 select * from pg_table_def where tablename = 'tableA'
  

В этой строке указывается, что столбец временных меток имеет тип «временная метка без часового пояса».

Чтобы протестировать метод приведения в Postgresql, я попробовал следующую строку:

 select '2016-10-01 12:12:12'::time
  

который преобразует временную метку в '12:12:12'

Я хочу воссоздать это для всего столбца ‘timestamp’ в моей таблице, но при запуске следующей строки возникает следующая ошибка:

 select timestamp::time from tableA

'SQL Error [500310] [0A000]: [Amazon](500310) Invalid operation: Specified types or functions (one per INFO message) not supported on Redshift tables.;
  

Существует ли ограничение на столбцы временных меток без часового пояса для преобразования их в just time?

Что я делаю не так, когда каждая запись столбца не преобразуется во время?

—редактировать — @halil вот измененная строка, которую я использовал из вашей.

 select (extract(hour from timestamp) || ':' || extract(minute from timestamp) || ':' || extract(second from timestamp)) as my_time from tableA
  

—редактировать—
@halil вот строки, используемые для вычитания метки времени. Все, что я делаю, это вычитаю следующую временную метку из предыдущей:

 select eventtimestamp - lead(eventtimestamp) over (order by eventtimestamp)
from ga_visit_events 
  

Комментарии:

1. Это Redshift или Postgres? Redshift основан на такой старой версии Postgres, что эти два больше не совпадают.

2. его красное смещение, и я использую postgresql в redshift

3. Нет «использования postgres в redshift». Это либо одно, либо другое. Это не может быть и то, и другое.

4. Тогда я использую redshift.

Ответ №1:

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

 select date_part(h, your_tm)||':'||date_part(min, your_tm)||':'||date_part(sec, your_tm) from your_table
  

Комментарии:

1. Я использую модифицированную версию, см. В разделе редактирование. но проблема с этим, с которой я сталкиваюсь, заключается в том, что мне нужно использовать математические функции для времени, в данном случае просто простое вычитание. Поэтому, когда мы используем вашу строку или мою строку, столбец преобразуется в текст. В этом случае я ничего не могу с этим поделать.

2. почему бы вам не выполнить математическую обработку временных меток и не преобразовать их в строку позже?

3. Я произвел расчеты для временных меток, но это дает мне действительно странные результаты, например, см. Редактирование для вычитания временных меток выше. Результаты, которые я получаю, выглядят примерно так: «4511137 лет 4 месяца -00:00: 10.184»