Создание временной техники от столбцов в Postgres
-
26-09-2019 - |
Вопрос
У меня есть 2 ряда в колонне, один кормит меня Джулианской датой (количество дней с 1 января 1970 года, когда этот день был 1), а второй столбец - это количество минут после полуночи текущего дня (почему это было Сделал так, я понятия не имею).
Я хотел бы получить мой запрос SQL для создания временной темы из этих двух столбцов.
Если бы у меня был доступ к данным заранее, я мог бы сделать что-то вроде SELECT timestamp '1970-01-01 00:00:00' + INTERVAL 'X DAYS' + INTERVAL 'Y MINUTES' AS my_time FROM mytable
, Но поскольку X и Y являются фактическими членами таблицы, я запрошаю, это не так просто.
У кого-нибудь есть какие-либо предложения?
По сути, я ищу эквивалентное [юридическое] решение:
SELECT timestamp '1970-01-01 00:00:00' + INTERVAL 'my_col1 DAYS' + INTERVAL 'my_col2 MINUTES' AS my_time FROm mytable
Я могу получить свой код на стороне сервера, чтобы сделать это для меня, но я бы понравился, если бы мог построить его в мой запрос.
Решение
Вы можете построить интервальные строки, а затем бросить их на interval
тип:
SELECT
timestamp '1970-01-01 00:00:00' +
cast(my_col1 || ' DAYS' AS interval) +
cast(my_col2 || ' MINUTES' AS interval) my_time FROM mytable
Другие советы
Не прибегая к строкому замещению или конкатенации:
SELECT
timestamp '1970-01-01 00:00:00' +
my_col1 * interval '1 DAY' +
my_col2 * interval '1 MINUTE' FROM mytable