我在oracle数据库中有一个表,其中有一个类型为varchar2的列,它存储日期。问题是它以两个字符的年份格式存储日期,如19/08/66,相当于19/08/1966。但是当我使用to_date函数转换这个日期时,它返回19/08/2066年,但期望19/08/1966。我怎样才能正确地转换它。
发布于 2014-08-19 17:07:12
使用to_date函数。
TO_DATE('16/06/66','DD/MM/RRRR')产出为1966年6月16日
TO_DATE('16/06/16','DD/MM/RRRR')产出为2016年6月16日
当您在1940年代运行此查询时,TO_DATE('16/06/16','DD/MM/RRRR')
产出为1916年6月16日
逻辑Oracle如下所示,函数接受2位数的年份,并返回4位数的年份.一个介于0-49之间的值将返回20xx年。一个介于50-99之间的值将返回19 99年。
发布于 2014-08-19 11:05:17
如果我还记得Oracle更正,to_date函数接受一个format_mask,如果您使用这个掩码: 0-49之间的'DD/MM/RRRR'值将返回20xx年,而值50-99将返回19xx年。所以试试这个:
to_date('19/08/66', 'DD/MM/RRRR')发布于 2014-08-19 11:03:51
试试这个:
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/1966https://stackoverflow.com/questions/25381693
复制相似问题