我们如何知道给定的2位数年份代码(YY)是19XX还是20XX?例如,如果我们输入07-apr-10
,则10
年1910
或2010
为{{1}}?
答案 0 :(得分:1)
一般来说,您应该使用RR
datetime format element将两位数年份转换为全年。
如果指定的两位数年份是00到49,那么
- 如果当前年份的最后两位数字是00到49,那么返回的年份与当前年份的前两位数字相同。
- 如果当前年份的最后两位数字是50到99,那么返回年份的前2位数字比当前年份的前2位数字大1。
如果指定的两位数年份是50到99,那么
- 如果当前年份的最后两位数字是00到49,那么返回年份的前2位数字比当前年份的前2位数字少1。
- 如果当前年份的最后两位数字是50到99,那么返回的年份与当前年份的前两位数字相同。
我认为你不想要YY
,因为它总是用当前年份的数字填充缺失的数字。例如:
SELECT TO_CHAR(TO_DATE('98', 'YY'), 'YYYY') FROM dual; -- returns 2098, not 1998
SELECT TO_CHAR(TO_DATE('9', 'Y'), 'YYYY') FROM dual; -- returns 2019
SELECT TO_CHAR(TO_DATE('98', 'RR'), 'YYYY') FROM dual; -- returns 1998 (until we get to 2050)
答案 1 :(得分:0)
select to_date('7/10/15','DD/MM/YY') from dual;
07-OCT-2015
select to_date('7/10/15','DD/MM/YYYY') from dual;
07-OCT-0015
答案 2 :(得分:0)
要检查一下:
首先,您需要将具有YY年格式的CHAR转换为日期:
TO_DATE('20-01-15','DD-MM-YY');
然后立即将其转换回CHAR,并查看输出,如下所示:
SELECT TO_CHAR(TO_DATE('20-01-15','DD-MM-YY'),'YYYY') FROM DUAL;