首页 > 解决方案 > 输入月份和年份并获得整个月份日期的输出

问题描述

我已经尝试过这段代码,但我想通过使用 where 条件传递月份和年份参数。

WITH d AS
  (SELECT TRUNC ( to_date('01.2012','mm.yyyy'), 'MM' ) - 1 AS dt
  FROM dual
  )
SELECT dt + LEVEL  AS date_month

   FROM d 
  CONNECT BY LEVEL <= ADD_MONTHS (dt, 1) - dt

标签: sqloracle

解决方案


您非常接近解决方案,可以这样做

SQL> var mon number;
SQL> var year number;
SQL> begin :mon :=&mon; :year := &year; end; -- mon --> 4 and year --> 2020
  2  /

PL/SQL procedure successfully completed
mon
---------
4
year
---------
2020

SQL> 
SQL> WITH d AS
  2  (
  3   SELECT TRUNC( to_date(lpad(:mon,2,'0')||'.'||:year,'mm.yyyy'), 'MM' ) - 1 AS dt
  4     FROM dual
  5  )
  6  SELECT dt + LEVEL AS date_month
  7    FROM d
  8  CONNECT BY LEVEL <= ADD_MONTHS (dt, 1) - dt
  9  /

列出2020 年 4 月的所有日期。并将这些参数值替换为所需的月份和年份组合。


推荐阅读