问题
以下查询返回结果:
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
|