从postgres中的列创建时间戳

时间:2010-08-05 18:15:56

标签: sql postgresql date timestamp julian

我在一列中有两行,一行给我朱利安日期(1970年1月1日以来的天数,当天为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 个答案:

答案 0 :(得分:3)

您可以构造区间字符串,然后将它们转换为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

答案 1 :(得分:0)

不使用字符串替换或连接:

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