【问题标题】:What is the difference between oracle's 'yy' and 'rr' date mask?oracle的'yy'和'rr'日期掩码有什么区别?
【发布时间】:2010-09-06 08:26:44
【问题描述】:

例子:

select ename from emp where hiredate = todate('01/05/81','dd/mm/yy')

select ename from emp where hiredate = todate('01/05/81','dd/mm/rr')

返回不同的结果

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    http://oracle.ittoolbox.com/groups/technical-functional/oracle-dev-l/difference-between-yyyy-and-rrrr-format-519525

    YY 只允许您检索年份的两位数字,例如,99 in 1999. 其他数字 (19) 自动分配给当前 世纪。 RR 通过四舍五入将两位数年份转换为四位数年份。

    50-99 存储为 1950-1999,以 00-49 结尾的日期存储为 2000-2049 年。 RRRR 接受四位输入(虽然不是必需的),并且 像 RR 一样转换两位数的日期。 YYYY 接受 4 位输入但不接受 做任何日期转换

    基本上,您的第一个示例将假设 81 为 2081,而 RR 假设为 1981。因此,第一个示例不应返回任何行,因为您很可能在 2081 年 5 月 1 日之后还没有雇用任何人 :-)

    【讨论】:

      【解决方案2】:

      y2k 兼容性。 rr 假设 01 为 2001,yy 假设 01 为 1901

      见:http://www.oradev.com/oracle_date_format.jsp

      编辑:该死! michael "quickfingers" stumbeat me to it!

      /mp

      【讨论】:

        【解决方案3】:

        @Michael Stum

        我上一次 Oracle 体验是很久以前的事了

        嗯,是在 2000 年之前吗? :p

        ...

        yy 是否总是假定为 19xx?

        according to your source,我们得到以下场景:

        USING
        ENTERED
        STORED
        SELECT of date column
        
        
        YY
        22-FEB-01
        22-FEB-1901
        22-FEB-01
        
        
        YYYY
        22-FEB-01
        22-FEB-0001
        22-FEB-0001
        
        
        RR
        22-FEB-01
        22-FEB-2001
        22-FEB-01
        
        
        RRRR
        22-FEB-01
        22-FEB-2001
        22-FEB-2001 
        

        /mp

        【讨论】:

          【解决方案4】:

          RR 代表 1990 年后,yy 假设 90 为 2090....就像我们在当前年份一样,...

          【讨论】:

          【解决方案5】:

          RR 显示四位数字为 1999 或 2015(如果是

          【讨论】:

            【解决方案6】:

            关于RR或RRRR

            当我们插入带有 2 位数年份的日期时(即 09/oct/15) 那么甲骨文可能会自动更改世纪,因此 解决方案是 4 位日期。但是 4 位版本被引入 一些最新版本,因此解决了这个问题 在早期版本中为RRRRRR。但请注意,它只有效 使用TO_DATE() 函数,但不使用TO_CHAR() 函数。

            每当在日期上进行插入/更新时,我们都应始终澄清与日期转换相关的时钟中运行的当前日期,因为 Oracle 通过联系服务器进行每次日期转换。

            为了保持世纪之间的一致性,最好使用 4 位年份执行日期转换。

            关于YY或YYYY

            它接受日期,但没有自动更改日期的功能。

            This Image shows behaviour when inserting date with two digit (i.e. 09/oct/15)

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-10-20
              • 1970-01-01
              • 2020-07-24
              • 2011-05-26
              • 2012-09-21
              • 1970-01-01
              相关资源
              最近更新 更多