Pgsql之查询一段时间内的所有日期

前几天干活儿的时候,项目中有这么个需求,需要用pgsql查询两个日期间的所有日期,包括年月日,下面贴代码:

 select date(t) as day
 from 
 generate_series('2020-10-27'::date,'2020-11-03', '1 days') as t;

下面是执行效果,跨年跨月的情况也是没问题的:

Pgsql之查询一段时间内的所有日期

下面咱们说下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;

执行效果:

Pgsql之查询一段时间内的所有日期

上一篇:029.PGSQL-pgsql创建新用户登录报错psql: FATAL: role "pguser" is not permitted to log in


下一篇:【codevs1004】四子连棋 状压bfs