【问题标题】:How to convert YY to YYYY ORACLE如何将 YY 转换为 YYYY ORACLE
【发布时间】:2018-06-12 16:58:18
【问题描述】:

如何将 YY 转换为 YYYY,示例如下,如果我运行下面的示例,我将收到 '0007' 年:

   DECLARE
       lv_promcode_txt VARCHAR(6) := 'A0807X';
       lv_prommth_txt VARCHAR2(7);
       lv_promyear_txt VARCHAR2(7);
   BEGIN
       lv_prommth_txt := SUBSTR(lv_promcode_txt, 2,2);
       DBMS_OUTPUT.PUT_LINE('Month of promo code is: '|| 
       TO_(TO_DATE(lv_prommth_TXT,'MM'), 'MONTH'));

       lv_promyear_txt := SUBSTR(lv_promcode_txt, 4,2);
       DBMS_OUTPUT.PUT_LINE('Year of promo code is: '||TO_CHAR(TO_DATE  
       (lv_promyear_txt, 'YYYY'),'YYYY'));
   END;

【问题讨论】:

    标签: oracle date plsql


    【解决方案1】:

    替换你最后的 DBMS_OUTPUT.PUT_LINE 部分代码
    DBMS_OUTPUT.PUT_LINE('Year of promo code is ( Style 1 ) : '||TO_CHAR(TO_DATE(lv_promyear_txt, 'YYYY'),'YYYY'));
    DBMS_OUTPUT.PUT_LINE('Year of promo code is ( Style 2 ) : '||TO_CHAR(TO_DATE(lv_promyear_txt, 'RRRR'),'YYYY'));
    

    TO_DATE 函数中更改 YYYY 文字 RRRR 就足够了。

    这个概念与year 2k problem 有关。

    对于日期 TO_DATE('18', 'RRRR') 将结果 2018 作为年份(对于
    当前世纪the last two digits of years00-49 之间),

    对于日期TO_DATE('74', 'RRRR') 将结果1974 作为年份(对于
    上个世纪the last two digits of years50-99 之间)

    【讨论】:

    【解决方案2】:

    您的格式掩码错误。示例:

       select TO_CHAR(TO_DATE (SUBSTR('A0807X', 4,2), 'YY'),'YYYY') from dual
    

    2007 年回归

    【讨论】:

      猜你喜欢
      • 2021-02-21
      • 1970-01-01
      • 1970-01-01
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-25
      相关资源
      最近更新 更多