PostgreSQL(有递归)

我有一个查询,返回2011年1月1日至12/31/2041之间的所有日期(周六和周日除外)。它工作正常,但是当我尝试将过滤器“ TRIM(TO_CHAR(dt,'DAY'))NOT IN('SATURDAY','SUNDAY')”放在WITH中时,它仅返回一行。有什么建议么?请记住,我是PostgreSQL的新手。

   WITH RECURSIVE bd(dt,rn) AS 
    (
     SELECT
           TO_DATE('01/01/2011','MM/DD/YYYY') AS dt,1 AS rn
     UNION
     SELECT
          dt + 1,rn + 1
     FROM
          bd
     WHERE
          dt BETWEEN TO_DATE('01/01/2011','MM/DD/YYYY') AND TO_DATE('12/31/2041','MM/DD/YYYY') - 1  
    )
    SELECT
         dt,rn
    FROM
         bd
    WHERE TRIM(TO_CHAR(dt,'DAY')) NOT IN ('SATURDAY','SUNDAY')
lyjzqxg188 回答:PostgreSQL(有递归)

无需递归查询。使用generate_series()

可以更轻松地完成此操作
select t.dt::date
from generate_series(date '2011-01-01',date '2014-12-31',interval '1 day') as t(dt)
where extract(isodow from t.dt) not in (6,7);
本文链接:https://www.f2er.com/3136977.html

大家都在问