oracle中dd/mm/yyyy和dd/mm/rrrrr有什么不一样

📅 发布时间:2026/7/9 1:46:53 👁️ 浏览次数:
oracle中dd/mm/yyyy和dd/mm/rrrrr有什么不一样
在Oracle中DD/MM/YYYY和DD/MM/RRRR都用于日期格式但它们在处理两位数年份时有重要区别主要区别1.YYYY格式-- 当前会话年份假设为2026年 SELECT TO_DATE(25/12/25, DD/MM/YYYY) FROM dual; -- 结果2025-12-25 (假设当前世纪是2000) -- YYYY会简单地将25转换为20252.RRRR格式SELECT TO_DATE(25/12/25, DD/MM/RRRR) FROM dual; -- 结果取决于当前年份RRRR的智能转换规则输入的2位年份当前年份的世纪部分转换结果00-49当前世纪的前半段当前世纪00-49当前世纪的后半段下个世纪50-99当前世纪的前半段上个世纪50-99当前世纪的后半段当前世纪实际示例假设当前日期是2026年当前世纪是2000年代-- 示例1输入25 TO_DATE(25/12/25, DD/MM/YYYY) -- 2025-12-25 TO_DATE(25/12/25, DD/MM/RRRR) -- 2025-12-25 -- 示例2输入75 TO_DATE(25/12/75, DD/MM/YYYY) -- 2075-12-25 (错误!) TO_DATE(25/12/75, DD/MM/RRRR) -- 1975-12-25 (正确!)何时使用哪种格式使用YYYY当你知道输入的是4位年份或想明确指定世纪使用RRRR当处理用户输入的2位年份特别是历史数据时最佳实践尽量使用4位年份避免歧义建议-- 明确的4位年份 TO_DATE(25/12/2025, DD/MM/YYYY) -- 如果需要处理混合的2位/4位年份用RRRR TO_DATE(25/12/25, DD/MM/RRRR)总之RRRR格式是Oracle为了解决千年虫问题而引入的智能日期转换机制它能更合理地推测2位年份所属的世纪。