Sql Oracle日期转换输出2000秒,而不是要求的90年代
在执行以下查询期间,输出为2090Sql Oracle日期转换输出2000秒,而不是要求的90年代,sql,oracle,date,Sql,Oracle,Date,在执行以下查询期间,输出为2090 select to_char(to_date('10-OCT-90', 'DD-MON-YY'), 'YYYY') from dual; 所需输出为1990,代码段中的日期为出生日期 编辑: 输入日期是从表中提取的,因此日期是DD-MON-YY格式。对于以字符串形式解析两位数年份的替代方法,Oracle提供了。因此,您的查询将是 select to_char(to_date('10-OCT-90', 'DD-MON-RR'), 'YYYY') from du
select to_char(to_date('10-OCT-90', 'DD-MON-YY'), 'YYYY') from dual;
所需输出为1990,代码段中的日期为出生日期
编辑:
输入日期是从表中提取的,因此日期是DD-MON-YY格式。对于以字符串形式解析两位数年份的替代方法,Oracle提供了。因此,您的查询将是
select to_char(to_date('10-OCT-90', 'DD-MON-RR'), 'YYYY') from dual;
从引用的Oracle文档:
RR datetime format元素类似于YY datetime format元素,但它为在其他时间存储日期值提供了额外的灵活性。RR datetime format元素允许您通过仅指定年份的最后两位数字来存储21世纪的20世纪日期
为了解决字符串中两位数的年份问题,Oracle提供了。因此,您的查询将是
select to_char(to_date('10-OCT-90', 'DD-MON-RR'), 'YYYY') from dual;
从引用的Oracle文档:
RR datetime format元素类似于YY datetime format元素,但它为在其他时间存储日期值提供了额外的灵活性。RR datetime format元素允许您通过仅指定年份的最后两位数字来存储21世纪的20世纪日期
使用RR而不是YY。请参见此处:使用RR而不是YY。请参见此处:尝试像这样使用RR:
select to_char(to_date('10-OCT-90', 'DD-MON-RR'), 'YYYY') from dual;
还请注意,您应该以YYYY格式存储日期,因为正确假设出生年份为2000年、1900年、1800年或……;会使人混淆。)
报告说:
YY只允许检索一年中的两位数,例如
1999年为99。其他数字(19)自动分配给
本世纪。RR通过以下方式将两位数年份转换为四位数年份:
四舍五入
50-99存储为1950-1999,00-49结束的日期存储为
2000-2049. RRRR接受四位数字输入(尽管不是必需的),
并像RR一样转换两位数的日期。YYYY接受4位输入
但不做任何日期转换
试着像这样使用RR:
select to_char(to_date('10-OCT-90', 'DD-MON-RR'), 'YYYY') from dual;
还请注意,您应该以YYYY格式存储日期,因为正确假设出生年份为2000年、1900年、1800年或……;会使人混淆。)
报告说:
YY只允许检索一年中的两位数,例如
1999年为99。其他数字(19)自动分配给
本世纪。RR通过以下方式将两位数年份转换为四位数年份:
四舍五入
50-99存储为1950-1999,00-49结束的日期存储为
2000-2049. RRRR接受四位数字输入(尽管不是必需的),
并像RR一样转换两位数的日期。YYYY接受4位输入
但不做任何日期转换
今天选择TRUNC(SYSDATE),
截止日期(出生日期,'DD-MON-RR')DOB,
出生日期
来自TM_DM_客户端
其中客户号为('22943179')
输出
Today DOB BIRTH_DATE
10/1/2019 1/1/2041 1/1/1941
今天选择TRUNC(SYSDATE),
截止日期(出生日期,'DD-MON-RR')DOB,
出生日期
来自TM_DM_客户端
其中客户号为('22943179')
输出
Today DOB BIRTH_DATE
10/1/2019 1/1/2041 1/1/1941
如果DOB是27-08-1947,我的日期栏(DOB)也有同样的问题。我使用下面的转换格式得到正确的年份来计算年龄
TO_DATE(TO_CHAR(DOB,'DD-MON-YYYY'), 'DD-MON-YYYY')
TO_DATE(TO_CHAR(DOB,'DD-MM-YYYY'), 'DD-MM-YYYY')
如果DOB是27-08-1947,我的日期栏(DOB)也有同样的问题。我使用下面的转换格式得到正确的年份来计算年龄
TO_DATE(TO_CHAR(DOB,'DD-MON-YYYY'), 'DD-MON-YYYY')
TO_DATE(TO_CHAR(DOB,'DD-MM-YYYY'), 'DD-MM-YYYY')
MySQL还是Oracle?不要标记未涉及的产品…通过查看标题删除MySQL!谢谢@rahultripathi也可能是1890年。很多人也是在那一年出生的。顺便说一句,
输入日期是从表中提取的,所以日期是DD-MON-YY格式的
-输入日期还是输入字符串?您要将哪种类型的列转换为YYYY
格式?MySQL还是Oracle?不要标记未涉及的产品…通过查看标题删除MySQL!谢谢@rahultripathi也可能是1890年。很多人也是在那一年出生的。顺便说一句,输入日期是从表中提取的,所以日期是DD-MON-YY格式的
-输入日期还是输入字符串?您试图转换为YYYY
格式的列的类型?to_char(to_date('07-NOV-15','DD-MON-RR'),'YYYY')的结果是什么?今天,明天?结果是2015年。。。生病了。to_char(to_date('07-NOV-15','DD-MON-RR'),'YYYY')的结果如何?今天,明天?结果是2015年。。。生病的