我必须取一个日期(dd-mon-yyyy
)并根据用户输入更改年份。如何在保留格式的同时提取日期和月份并添加年份?
例如,它目前为01-JAN-2015
,用户希望它为01-JAN-2016
。我目前正在做的事情:
SELECT EXTRACT(DAY FROM contract_year) || EXTRACT(MONTH FROM contract_year) || '2016'
FROM table
WHERE program = programid
我的输出是112016
,但我想要01-JAN-2016
。有什么建议吗?
答案 0 :(得分:2)
试试这个
SELECT to_char(add_months('01-JAN-2015', 12*1),'dd-MON-yyyy') -- replace 1 with n where n = years
from dual
如果您想将给定年份的使用添加到当前日期/月,请使用此
with your_table as(
select '01-JAN-2015' as contract_year from dual
)
select to_date(substr(to_char(contract_year),1,7)||'2017','DD-MON-YYYY') from your_table
如果您没有按要求查看输出,则表示您必须更改客户端设置。尝试在SQL Plus窗口中运行它。
答案 1 :(得分:0)
结合to_date和to_char:
SELECT to_date(to_char(contract_year,'dd-mm-') || '2016','dd-mm-yyyy')
FROM table
WHERE program = programid
答案 2 :(得分:0)
我不完全清楚contract_year
是日期还是字符串。
如果是约会:
select to_char(contract_year, 'DD-MON-') || '2016'
from table
如果它是DD-MON-YYYY
格式的字符串,那么:
select to_char(to_date(contract_year, 'DD-MON-YYYY'), 'DD-MON-') || '2016'
from table