to_date函数特定年份的奇怪行为

时间:2013-12-04 12:03:34

标签: sql oracle date

日期包含年2000

时的不同行为
 select to_date(add_months(sysdate,-50),'dd/mm/yyyy') from dual    --error

 ORA-01858: a non-numeric character was found where a numeric was expected

  -- 04/08/2000 12:59:15  contains year 2000

 select to_date(sysdate,'dd/mm/yyyy') from dual   --this work,but diff output

2 个答案:

答案 0 :(得分:2)

您应该使用TO_CHAR代替TO_DATE

TO_DATE函数的第一个参数是一个STRING参数,所以这里你的数据被转换为STRING表示,然后转换为日期格式BUT,采用不同的格式:

to_char(add_months(sysdate,-50),'dd/mm/YYYY')

答案 1 :(得分:0)

您的第一个查询select to_date(add_months(sysdate,-50),'dd/mm/yyyy') from dual可以正常使用

<强>结果:

TO_DATE(ADD_MONTHS(SYSDATE,-50),'DD/MM/YYYY')
---------------------------------------------
04-OCT-09