Postgresql 使用序列号生成函数 生成连续日期

Postgresql 使用序列号生成函数 生成连续日期,第1张

概述项目中交易记录进行统计查询时,需要对一段时间连续日期内交易数据进行统计, 因为指定时间段内某些日期可能没有交易数据,所以需要补齐。 使用 postgresql序列生成函数,生成连续日期,再进行查询。 如下: 序列号生成函数 函数 参数类型 返回类型 描述 generate_series(start,stop) int或bigint setof int或setof bigint(与参数类型相同)) 项目中交易记录进行统计查询时,需要对一段时间连续日期内交易数据进行统计,
因为指定时间段内某些日期可能没有交易数据,所以需要补齐。

使用postgresql序列生成函数,生成连续日期,再进行查询。

如下:

序列号生成函数

函数 参数类型 返回类型 描述
generate_serIEs(start,stop) int或bigint setof int或setof bigint(与参数类型相同)) 生成一个数值序列,从start到stop,步长为1 。
generate_serIEs(start,stop,step) int或bigint setof int或setof bigint(与参数类型相同)) 生成一个数值序列,从start到stop,步长为step。
generate_serIEs(start,stop,step) timestamp或timestamp with time zone setof timestamp或setof timestamp with time zone(与参数类型相同) 生成一个数值序列,从start到stop,步长为step。

网上有人的用法(如下),先计算日期相差天数,查询中进行日期累加,我觉得反而变复杂了
select to_char(cast('20081001' as date) + s.a,'yyyyMMdd') as 统计日期 from generate_serIEs(0,cast('20081031' as date)-cast('20081001' as date),1) as s(a)

postgresql中给的例子是:
SELECT * FROM generate_serIEs('2008-03-01 00:00'::timestamp, '2008-03-04 12:00', '10 hours');
generate_serIEs ---------------------
2008-03-01 00:00:00
2008-03-01 10:00:00
2008-03-01 20:00:00
2008-03-02 06:00:00
2008-03-02 16:00:00
2008-03-03 02:00:00
2008-03-03 12:00:00
2008-03-03 22:00:00
2008-03-04 08:00:00
(9 rows)

稍作修改如下:
SELECT to_char(a,'yyyyMMdd') FROM generate_serIEs('2008-03-01'::date,'2008-03-04','1 days') as a;
"20080301" "20080302" "20080303" "20080304" 满足现在使用场景。
总结

以上是内存溢出为你收集整理的Postgresql 使用序列号生成函数 生成连续日期全部内容,希望文章能够帮你解决Postgresql 使用序列号生成函数 生成连续日期所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1178282.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存