Как отформатировать секунды в формате ЧЧ: ММ: СС в Presto - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть таблица как:

id   time_seconds
5             140
6               5
7           15000

Я хочу получить ее как:

id  time_format
5         23:52
6         00:05
7      04:10:00

В основном формат HH:MM:SS Теперь дело в том, что у меня нетмного записей с часами, поэтому HH: должно быть в выходных данных, только если есть часы.В противном случае это должно быть просто MM:SS

Presto имеет функцию, которая выполняет аналогичные действия SELECT parse_duration('60s'); Но вывод не то, что мне нужно 0 00:01:00.000, и я не уверен, что это способ его использования?

Это то, что я сделал до сих пор:

select id, concat(cast(time_seconds as varchar(10)),'s')
from mytable

не уверен, как продолжить

1 Ответ

0 голосов
/ 26 сентября 2019

Вы можете легко преобразовать это время:

select time '00:00:00' + time_seconds * interval '1' second

Я думаю, что это лучший способ представить значение.Добавление часа условно кажется плохой идеей - это может привести к путанице.

Я думаю, что в следующий раз будет работать:

select (case when time_seconds < 60 * 60
             then date_format(time '00:00:00' + time_seconds * interval '1' second, '%i:%s')
             else date_format(time '00:00:00' + time_seconds * interval '1' second, '%H:%i:%s')
        end) as hhmmss
...