Вопрос

У меня есть 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top