#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»