找回密码
 立即注册
问题
以下查询返回结果:

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





上一篇:asp.net MVC中如何实现动态资源权限?
下一篇:如何禁用角度数据表中数据的初始排序?