52ky 发表于 2022-5-3 10:29:26

日期(21-09-1989,DD-MM-YY)和日期(21-09-89,DD-MM-YY)有什么区别?

问题
以下查询返回结果:

SELECT *
FROM EMPLOYEES
WHERE HIRE_DATE = TO_DATE('21-09-1989','DD-MM-YY');

如果我将日期从1989年9月21日更改为1989年9月21日,则返回零。

SELECT *
FROM EMPLOYEES
WHERE HIRE_DATE = TO_DATE('21-09-89','DD-MM-YY');

这里有什么问题?

回答
如果使用 YY 作为年份,则返回当前世纪的年份,即 2000-2099 。在您的情况下 -- 2089

如果使用 YYYY 则返回确切的年份。--在您的情况下 1989

如果使用 RR 则返回介于 1950-2049 之间的年份。--在您的情况下 1989

所以

TO_DATE('21-09-1989','DD-MM-YY') --> 21-09-1989
-- oracle is smart to detect the given format as YYYY

TO_DATE('21-09-89','DD-MM-YY') --> 21-09-2089
-- as 2089 is between 2000-2099

TO_DATE('21-09-89','DD-MM-RR') --> 21-09-1989
-- as 1989 is between 1950-2049



页: [1]
查看完整版本: 日期(21-09-1989,DD-MM-YY)和日期(21-09-89,DD-MM-YY)有什么区别?