Мне нужно преобразовать следующий (hh) целочисленный столбец в столбце времени. Ожидаемые результаты ниже:Postgres convert integer во время
hh time
1 00:00
2 00:30
3 01:00
4 01:30
...
48 23:30
Помогите?
Мне нужно преобразовать следующий (hh) целочисленный столбец в столбце времени. Ожидаемые результаты ниже:Postgres convert integer во время
hh time
1 00:00
2 00:30
3 01:00
4 01:30
...
48 23:30
Помогите?
Вы можете просто сделать:
select hh, ('00:00:00'::time + (hh - 1) * interval '30 minute') as time
from t;
Отличные работы как шарм. благодаря – user636322
SELECT
TIME '00:00' + (1 - 1) * INTERVAL '30 minutes',
TIME '00:00' + (2 - 1) * INTERVAL '30 minutes',
TIME '00:00' + (3 - 1) * INTERVAL '30 minutes',
TIME '00:00' + (4 - 1) * INTERVAL '30 minutes',
TIME '00:00' + (5 - 1) * INTERVAL '30 minutes',
-- ...
TIME '00:00' + (48 - 1) * INTERVAL '30 minutes'
Другим решением было бы работать с Unix временными метками:
SELECT
(to_timestamp((1 - 1) * 30 * 60) at time zone 'UTC')::time,
(to_timestamp((2 - 1) * 30 * 60) at time zone 'UTC')::time,
(to_timestamp((3 - 1) * 30 * 60) at time zone 'UTC')::time,
(to_timestamp((4 - 1) * 30 * 60) at time zone 'UTC')::time,
(to_timestamp((5 - 1) * 30 * 60) at time zone 'UTC')::time,
-- ...
(to_timestamp((48 - 1) * 30 * 60) at time zone 'UTC')::time
Это четвёртая полчаса из 48 половины ч. – user636322
'select (make_interval (mins: = (hh-1) * 30)) :: time;' – Abelisto