我们如何知道给定的 2 位数年份代码 (YY) 是 19XX 还是 20XX?例如,如果我们输入07-apr-10
,那么是10
年份1910
还是2010
?
3 回答
1
一般来说,您应该使用RR
datetime 格式元素将两位数年份转换为完整年份。
如果指定的两位数年份是 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)
于 2015-09-17T10:53:12.233 回答
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;
于 2015-09-17T10:43:00.727 回答
0
编辑:对不起,我的客户端设置中只有 YY。添加 YYYY 后,我得到以下结果。所以看起来默认情况下YY需要20YY
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
于 2015-09-17T10:37:47.130 回答