赞
踩
前几天干活儿的时候,项目中有这么个需求,需要用pgsql查询两个日期间的所有日期,包括年月日,下面贴代码:
- select date(t) as day
- from
- generate_series('2020-10-27'::date,'2020-11-03', '1 days') as t;
下面是执行效果,跨年跨月的情况也是没问题的:
下面咱们说下PostgreSql中generate_series函数的用法:
用处:他可以按照不同的规则来生成填充数据
语法:
函数 | 参数类型 | 返回类型 | 描述 |
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 |
也可以用递归来做,其中recursive函数配合with查询来实现遍历,效率会更高一些:
- with recursive t(n) as (
- select date('2020-10-27')
- union all
- select n+1 from t where n < date('2020-11-03')
- )select n as day from t;
执行效果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。