year在dd/mon/yy中转换为1943和2043,在两个不同的表中使用相同的数据

q43xntqr  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(537)

我正在同一数据库中的两个不同表上尝试相同的sql。

SELECT date_of_birth_1 from Table1 where id = '1111';

输出是43年12月31日。

SELECT date_of_birth_2 from Table2 where id = '1111';

输出又是43年12月31日。
但当我跑的时候

SELECT extract(year from date_of_birth_1) from Table1 where id = '1111';

产量为1943年。
当我跑的时候

SELECT extract(year from date_of_birth_2) from Table2 where id = '1111';

输出为2043。
我不明白发生了什么事,你能帮帮我吗。我希望两个表使用相同的参考年,即1900年。
编辑:这种情况只发生在某些日期。

select EXTRACT(year FROM TO_DATE('01/AUG/43')) from dual;

输出为2043。

select EXTRACT(year FROM TO_DATE('04/MAR/53')) from dual;

产量为1953年。

rhfm7lfc

rhfm7lfc1#

默认情况下,oracle只显示年度的最后两位数字。在一张表中,日期似乎是1943年12月31日,而在另一张表中则是2043年12月31日。
您可以使用 to_char() :

select to_char(dob, 'YYYY-MM-DD')

如果需要修复数据,可以执行以下操作:

update t
    set dob = add_months(dob, -12 * 100)
    where dob > <whatever threshold you want here>

相关问题