我在一列中有两行,一行给我朱利安日期(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
我可以让我的服务器端代码为我做,但如果我可以将它构建到我的查询中,我会喜欢它。
答案 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