Oracle日期提取和连接

时间:2015-10-01 12:26:02

标签: sql oracle

我必须取一个日期(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。有什么建议吗?

3 个答案:

答案 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