Подтвердить что ты не робот

PostgreSQL - Как преобразовать секунды в числовое поле в HH: MM: SS

Я новичок в PostgreSQL (я много лет использую MS SQL) и вам нужно преобразовать числовой столбец, который содержит время в секундах до формата HH: MM: SS.

У меня есть Googled и обнаружил, что to_char(interval '1000s', 'HH24:MI:SS') работает, поэтому я пытаюсь использовать его с моим именем поля:

to_char(fieldname, 'HH24:MI:SS') дает ошибку cannot use "S" and "PL"/"MI"/"SG"/"PR" together

to_char(fieldname::interval, 'HH24:MI:SS') дает ошибку cannot cast type numeric to interval

Может ли кто-нибудь показать мне, где я ошибаюсь?

4b9b3361

Ответ 1

SELECT  TO_CHAR('1000 second'::interval, 'HH24:MI:SS')

или, в вашем случае

SELECT  TO_CHAR((mycolumn || ' second')::interval, 'HH24:MI:SS')
FROM    mytable

Ответ 2

Чтобы преобразовать секунды в HH: MM: SS

SELECT 120 * interval '1 sec';

Вы получите 00:02:00

Чтобы преобразовать минуты в HH: MM: SS

SELECT 120 * interval '1 min'; 

Вы получите 02:00:00

Ответ 3

Как видно из комментария выше в Amazon Redshift, он не работает. Любое решение?

Я использую следующий запрос:

ВЫБЕРИТЕ TO_CHAR ((secs_from_Secs || 'second') :: интервал, 'HH24: MI: SS') как интервал 1 ИЗ ТАБЛИЦЫ

и я получаю следующую ошибку:

Amazon Недопустимая операция: указанные типы или функции (по одному на каждое сообщение INFO) не поддерживаются в таблицах Redshift.; [Состояние SQL = 0A000, код ошибки БД = 500310]

Предупреждения: функция "to_char (интервал, текст)" не поддерживается.