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

Sud*_* IS 4 sql oracle format date y2k

下面的查询返回结果:

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

好像我将日期从 21-09-1989 更改为 21-09-89 什么都不返回。

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

这里有什么问题?

Tej*_*ash 8

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

如果您使用 ,YYYY则返回确切的年份。——就你而言1989

如果您使用RR1950-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
Run Code Online (Sandbox Code Playgroud)