日期:2014-05-16  浏览次数:20465 次

oracle中的一个日期问题
oracle中的一个日期问题

需求:针对表coursedecimal中的course_time字段,日期在2010年6月份之前的全部加上12个月,也就是改成2011年的。
实现:
update coursedecimal  set course_time=add_months(course_time,12) where course_time<to_date('2010-06-01','yyyy-mm-dd');

注:add_months()是oracle中自带的函数。 使用to_date()时一定要注意指定格式。
如果在使用的过程中报错,出现:

ORA-01861: 文字与格式字符串不匹配
01861. 00000 -  "literal does not match format string"
*Cause:    Literals in the input must be the same length as literals in
           the format string (with the exception of leading whitespace).  If the
           "FX" modifier has been toggled on, the literal must match exactly,
           with no extra whitespace.
*Action:   Correct the format string to match the literal.

此时需要修改一下oracle中日期格式化的设置
alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';


这样就OK了.