psql generate_series 方法不支持内部 concat



以下 sql 代码按预期工作

generate_series('2018-06-29 00:00:00','2018-06-29 23:00:00', interval '1 hour')

但是当我输入 concat 方法而不是前 2 个参数时,它会出现错误消息

generate_series(concat('2018-06-29 00:00:00', '+05'), concat('2018-06-29 23:00:00', '+05'), interval '1 hour')

错误消息

function generate_series(text, text, interval) does not exist

如果连接,它将变为文本数据类型。因此,您无法生成序列。

下面的查询将产生所需的结果

无需编写"间隔"。由于开始和结束是时间戳 postgresql 理解 5h 和 1h 是 5 小时和 1 小时

选择  generate_series(时间戳 '2018-06-29 00:00:00' + '5h',  时间戳 '2018-06-29 23:00:00' + '5h', "1h"(

这是因为generate_series()不对字符串进行操作。 转换为正确的数据类型:

select generate_series(concat('2018-06-29 00:00:00'::text, '+05'::text)::timestamp,
concat('2018-06-29 23:00:00'::text, '+05'::text)::timestamp,
interval '1 hour'
)

不需要 concat(( 或字符串操作。

如果要在开始和结束时间戳中添加 5 小时,则只需添加:

generate_series(timestamp '2018-06-29 00:00:00' + interval '5 hour',
timestamp '2018-06-29 23:00:00' + interval '5 hour', interval '1 hour')

相关内容

  • 没有找到相关文章

最新更新