Oracle varchar2到日期转换

时间:2014-08-19 10:58:36

标签: sql oracle

我在oracle数据库中有一个表,它有一列varchar2类,它存储日期。问题是它存储日期为2个字符年份格式,如19/08/66,相当于19/08/1966。但是,当我使用to_date函数转换此日期时,它将返回19/08/2066,但期待19/08/1966。我怎样才能正确转换它。

3 个答案:

答案 0 :(得分:6)

如果我记得Oracle正确,to_date函数接受format_mask,如果你使用这个掩码:0-49之间的'DD/MM/RRRR'值将返回20xx年,50-99之间的值将返回19xx年。所以试试这个:

to_date('19/08/66', 'DD/MM/RRRR')

答案 1 :(得分:1)

试试这个:

with t as(
  select '16/06/66' str from dual
)
select to_date(str, 'DD/MM/YY') after, to_date(str, 'DD/MM/RR') before
  from t

AFTER       BEFORE
----------------------
06/16/2066  06/16/1966

答案 2 :(得分:1)

使用to_date函数。

TO_DATE('16/06/66','DD/MM/RRRR')

输出是     16/06/1966

TO_DATE('16/06/16','DD/MM/RRRR')

输出是    16/06/2016

当您在20世纪40年代运行此查询时,

TO_DATE('16/06/16','DD/MM/RRRR')

输出是    16/06/1916

Oracle遵循以下逻辑,函数接受2位数年份并返回4位数年份。 0-49之间的值将返回20xx年。 50-99之间的值将返回19xx年。