1

我在一列中有 2 行,其中一个为我提供朱利安日期(自 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

我可以让我的服务器端代码为我做这件事,但如果我可以将它构建到我的查询中,我会喜欢它。

4

2 回答 2

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
于 2010-08-05T18:23:34.717 回答
0

不诉诸字符串替换或连接:

SELECT
    timestamp '1970-01-01 00:00:00' +
    my_col1 * interval '1 DAY' +
    my_col2 * interval '1 MINUTE' FROM mytable
于 2010-08-05T18:50:25.250 回答