создание метки времени из столбцов в postgres - PullRequest
1 голос
/ 05 августа 2010

у меня есть 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

я могу заставить свой серверный код сделать это для меня, но мне бы понравилось, если бы я мог встроить его в свойзапрос.

Ответы [ 2 ]

3 голосов
/ 05 августа 2010

Вы можете создать интервальные строки и затем привести их к типу 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
0 голосов
/ 05 августа 2010

Не прибегая к подстановке или объединению строк:

SELECT
    timestamp '1970-01-01 00:00:00' +
    my_col1 * interval '1 DAY' +
    my_col2 * interval '1 MINUTE' FROM mytable
...