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