Oracle SQL特殊句点格式
例如,我有一个格式为YYYYMM的特殊会计期间 2015年2月是2015002年 2014年11月是2014011年 我需要做减法从期间,2个月前从2015002是2014012,但我不能这样做Oracle SQL特殊句点格式,sql,oracle,Sql,Oracle,例如,我有一个格式为YYYYMM的特殊会计期间 2015年2月是2015002年 2014年11月是2014011年 我需要做减法从期间,2个月前从2015002是2014012,但我不能这样做 SELECT '2015001' - 2 FROM DUAL 我该怎么做呢?您应该先将其转换为日期,然后减去月份,再转换回您需要的格式 with x(y) as ( select '2015002' from dual ) select y, to_date(y,'YYYY"0"MM
SELECT '2015001' - 2 FROM DUAL
我该怎么做呢?您应该先将其转换为日期,然后减去月份,再转换回您需要的格式
with x(y) as (
select '2015002' from dual
)
select y,
to_date(y,'YYYY"0"MM'),
add_months(to_date(y,'YYYY"0"MM'),-2),
to_char(add_months(to_date(y,'YYYY"0"MM'),-2),'YYYY"0"MM')
from x
:
| Y | TO_DATE(Y,'YYYY"0"MM') | ADD_MONTHS(TO_DATE(Y,'YYYY"0"MM'),-2) | TO_CHAR(ADD_MONTHS(TO_DATE(Y,'YYYY"0"MM'),-2),'YYYY"0"MM') |
|---------|----------------------------|---------------------------------------|------------------------------------------------------------|
| 2015002 | February, 01 2015 00:00:00 | December, 01 2014 00:00:00 | 2014012 |
您应该首先将其转换为日期,然后减去月份,再转换回所需的格式
with x(y) as (
select '2015002' from dual
)
select y,
to_date(y,'YYYY"0"MM'),
add_months(to_date(y,'YYYY"0"MM'),-2),
to_char(add_months(to_date(y,'YYYY"0"MM'),-2),'YYYY"0"MM')
from x
:
| Y | TO_DATE(Y,'YYYY"0"MM') | ADD_MONTHS(TO_DATE(Y,'YYYY"0"MM'),-2) | TO_CHAR(ADD_MONTHS(TO_DATE(Y,'YYYY"0"MM'),-2),'YYYY"0"MM') |
|---------|----------------------------|---------------------------------------|------------------------------------------------------------|
| 2015002 | February, 01 2015 00:00:00 | December, 01 2014 00:00:00 | 2014012 |