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

标签 sql oracle date format y2k

下面的查询返回结果:

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

好像我将日期从 21-09-1989 更改为 21-09-89 什么都不返回。
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

关于sql - TO_DATE ('21-09-1989' ,'DD-MM-YY' ) 和 TO_DATE ('21-09-89' ,'DD-MM-YY' ) 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61167737/

相关文章:

mysql - GROUP BY + SUM 在 where 子句中

sql - Oracle SQL Developer 限制数据类型 char(5) 的字符数

java - 通过字符串变量命名对象

javascript - Date(dateString) 和 new Date(dateString) 的区别

c++ - 在 C++ 中将秒数转换为 UNIX 时间戳

sql - Azure 在代码中创建数据库

MySQL 执行 INTO FROM 时出现错误 1327

java - 如何编写 sql 查询以使用准备好的语句更新表的多个列?

Perl DBD::Oracle 模块安装

oracle - 如何在JRuby Gradle项目中避免 “cannot load Java class oracle.jdbc.OracleDriver”?