Sql 给定日期2019-12-31过去3个月的yyyymm格式日期列表
我想要过去3个月的yyyymm格式的日期列表 对于给定的输入,日期未知数据类型Sql 给定日期2019-12-31过去3个月的yyyymm格式日期列表,sql,oracle,Sql,Oracle,我想要过去3个月的yyyymm格式的日期列表 对于给定的输入,日期未知数据类型 Input_date = 2019-12-31 所需输出 201912 201911 210910 数值 我想将解决方案查询用作另一个查询的子查询 Select * from table where fyr_actg_prd in (select to_number(to_char(add_months(to_date(input_date,'yyyy-mm-dd'),1-LEVEL), 'yyyymm'))
Input_date = 2019-12-31
所需输出
201912
201911
210910
数值
我想将解决方案查询用作另一个查询的子查询
Select * from table where fyr_actg_prd in
(select to_number(to_char(add_months(to_date(input_date,'yyyy-mm-dd'),1-LEVEL), 'yyyymm')) from dual connect by LEVEL <=3)
上面的查询是在它给出时执行的
Select * from table where fyr_actg_prd in
(select to_number(to_char(add_months(to_date(2019-12-31,'yyyy-mm-dd'),1-LEVEL), 'yyyymm')) from dual connect by LEVEL <=3)
Fyr_actg_prd是数字数据类型
上述解决方案的问题是,输入日期没有单引号,因此错误请尝试以下操作:
选择以指定月份:输入日期,-LEVEL+1,'YYYYMM'从双连接按级别<4输入
您可以在包含“按级别连接”的查询中使用add_months函数。不要生成所有值,只需在以下之间使用: 挑选* 从桌子上 其中,fyr\u actg\u prd介于到字符添加月份之间:输入日期,-2,‘YYYYMM’ 和TO_CHAR:input_date,'yyyyymm' 如果要生成值,可以使用分层查询: 挑选* 从表\u名称 fyr_actg_prd在哪里 选择添加月份:输入日期,第3级,“YYYYMM” 来自双重
按级别连接列input_date的数据类型是什么?我想在另一个查询中将解决方案查询用作子查询。这样,当输入日期在1月或2月时,从解决方案查询中fyr_actg_prd所在的表中选择*将无法迭代当然是@MT0,我只是回答了OP需要的内容。他已经只呆了一年。问题中没有提到只呆一年的要求,包括编辑历史或任何评论。@BarbarosÖzhan我得到的输入是2019-12-31,没有单引号。如果输入日期是日期数据类型。它不带单引号。您的分层查询不需要connect by子句吗
with t as
(
select date'2019-12-31' as input_date
from dual
)
select to_char( add_months(input_date, 1 - level ) , 'yyyymm' ) as months
from t
connect by level <= 3