Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 给定日期2019-12-31过去3个月的yyyymm格式日期列表_Sql_Oracle - Fatal编程技术网

Sql 给定日期2019-12-31过去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'))

我想要过去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')) 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