select to_char(TO_date('2016', 'yyyy'),'yyyymmdd'),
to_char(TO_date('2016', 'RRRR'),'yyyymmdd'),
to_char(TO_date('16', 'yy'),'yyyymmdd'),
to_char(TO_date('16', 'RR'),'yyyymmdd'),
to_char(TO_date('2067', 'yyyy'),'yyyymmdd'),
to_char(TO_date('2067', 'RRRR'),'yyyymmdd'),
to_char(TO_date('67', 'yy'),'yyyymmdd'),
to_char(TO_date('67', 'RR'),'yyyymmdd')
FROM DUAL;
RR RR参数与YY参数很类似,但取值规则略有不同:
如果输入的两位数是00-49:如果当前年份属于00-49,则返回成本世纪所在年份;
如果当前年份属于50-99,则返回成下世纪所在年份。
如果输入的两位数是50-99:
如果当前年份属于00-49,则返回成上世纪所在年份
如果当前年份属于50-99,则返回成本世界所在年份
注:这种自动转换只适用于 String -> Date 的转换,如果是 Date -> String,那就按照 Date 存储的值来转换,此时再用 RR/RRRR 已经没有意义了,因为 Oracle 内部存储的年份是四位数的。