从1月19日到10月2020年,从本年1月19日到今年这一月要检索的每个月的最后一天是什么查询?
预期产量
Last Day
--------
31-JAN-2019
28-FEB-2019
31-MAR-2019
...
31-JAN-2020
29-FEB-2020
31-MAR-2020
答案 0 :(得分:0)
SQL> select last_day(add_months(date'2019-01-01',level-1)) dt from dual connect by level<=24;
DT
-------------------
2019-01-31 00:00:00
2019-02-28 00:00:00
2019-03-31 00:00:00
2019-04-30 00:00:00
2019-05-31 00:00:00
2019-06-30 00:00:00
2019-07-31 00:00:00
2019-08-31 00:00:00
2019-09-30 00:00:00
2019-10-31 00:00:00
2019-11-30 00:00:00
2019-12-31 00:00:00
2020-01-31 00:00:00
2020-02-29 00:00:00
2020-03-31 00:00:00
2020-04-30 00:00:00
2020-05-31 00:00:00
2020-06-30 00:00:00
2020-07-31 00:00:00
2020-08-31 00:00:00
2020-09-30 00:00:00
2020-10-31 00:00:00
2020-11-30 00:00:00
2020-12-31 00:00:00
答案 1 :(得分:0)
我喜欢为此使用标准的递归查询:
with cte (dt) as (
select date '2019-01-01' dt from dual
union all select add_months(dt, 1) from cte where dt < add_months(sysdate, -1)
)
select last_day(dt) dt from cte
这将生成从2019年1月到当前月(包括当月)的所有月末日期。