前幾天干活兒的時候,項目中有這么個需求,需要用pgsql查詢兩個日期間的所有日期,包括年月日,下面貼代碼:
1 select date(t) as day 2 from 3 generate_series('2020-10-27'::date,'2020-11-03', '1 days') as t;
下面是執行效果,跨年跨月的情況也是沒問題的:
下面咱們說下PostgreSql中generate_series函數的用法:
用處:他可以按照不同的規則來生成填充數據
語法:
也可以用遞歸來做,其中recursive函數配合with查詢來實現遍歷,效率會更高一些:
1 with recursive t(n) as ( 2 select date('2020-10-27') 3 union all 4 select n+1 from t where n < date('2020-11-03') 5 )select n as day from t;
執行效果:
如果這篇博客幫助到了您,是我的榮幸,如果有好的想法,可以在評論區討論哦。