我想要一个过去3个月内[MSBuild]::GetRegistryValue
格式的日期列表
对于给定的input_date未知数据类型
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)
Fyr_actg_prd是数字数据类型
以上解决方案的问题是input_date没有单引号,所以出错
答案 0 :(得分:0)
尝试以下操作:
SELECT TO_CHAR(ADD_MONTHS(:INPUT_DATE,-LEVEL+1),'YYYYMM') FROM dual CONNECT BY LEVEL < 4
答案 1 :(得分:0)
您可以在包含add_months()
的查询中使用connect by level <= 3
函数:
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
答案 2 :(得分:0)
不生成所有值,只需使用sudo apt install liblttng-ust0 libcurl3 libcurl4 libssl1.0.0 libkrb5-3 zlib1g libicu52 libicu55 libicu57 libicu60 libunwind8 libuuid1
:
BETWEEN
如果要生成值,可以使用分层查询:
SELECT *
FROM table
WHERE fyr_actg_prd BETWEEN TO_CHAR( ADD_MONTHS( :input_date, -2 ), 'YYYYMM' )
AND TO_CHAR( :input_date, 'YYYYMM' )
或递归子查询:
SELECT *
FROM table_name
WHERE fyr_actg_prd IN (
SELECT TO_CHAR( ADD_MONTHS( :input_date, LEVEL - 3 ), 'YYYYMM' )
FROM DUAL
CONNECT BY LEVEL <= 3
);