如何将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;
答案 0 :(得分:3)
您的格式掩码错误。例如:
select TO_CHAR(TO_DATE (SUBSTR('A0807X', 4,2), 'YY'),'YYYY') from dual
返回2007
答案 1 :(得分:3)
用
替换代码的最后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'));
在YYYY
函数中,只需更改RRRR
文字TO_DATE
即可。
这个概念与year 2k problem
有关。
对于日期TO_DATE('18', 'RRRR')
,结果2018
为年份(对于年份)
当前世纪,the last two digits of years
介于00
- 49
)之间,
而
对于日期TO_DATE('74', 'RRRR')
,结果1974
为年份(对于年份)
上个世纪,the last two digits of years
介于50
- 99
)