ORACLE 数据库中在将date类型转换成varchar类型时出现问题。SQL如下:

select date_colum, to_char(date_colum,'yyyymmdd') from table ;

查询的结果如图所示:请问这是怎么回事,请高手指教,不胜感激!
date_colum 字段是date 类型的 , 还有一点是我的数据时通过PB前台操作保存到ORACLE中的,请问如何解决这个问题 ?
多谢各位热心帮忙,问题我找到了,这个问题跟大家分享一下,主要原因是我在PB前台保存的时候把datime类型强制转换成date类型,但是ORACLE数据库认为两个类型是一样的,所以在保存的时候只保存了一部分进去,例如2011-05-05 保存到数据库中后变为 2011-05-05 ???? ,所以在通过SQL取值时出现全部是0的闹剧,而1998-1-1那个没有乱码是因为恰巧那个值保存的时候没有保存为1998-1-1 ????,所以只有这一个是正常的。希望能够帮助更多的人。

你这转换函数的format格式都错了,你的原数字字段有'-' ,而你的format中没有,应该写成to_char(date_colum,'yyyy-mm-dd')
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-18
1998年那个就没问题,2000年以后的就有问题了。怎么回事呢?
第2个回答  2012-05-16
问题太诡异了,你用的什么工具,换成sqlplus试试追问

我用的是PLSQLDEV版本8 上执行的结果,刚才我试了一下sqlplus 效果和原来的效果是一样的也都是‘00000000’ ,请问这是什么原因

追答

这个真不知道怎么回事,你用sqlplus或者pl/sql developer插入几条数据,然后检索看看。
我还怀疑过你的字段类型是否正确,可是我用varchar2试的时候根本就报错

你也可以试试下面的,完全脱离你原表的情况。

create table ta(va varchar2(20),da date);
insert into ta values('2012-2-2',to_date('2012-2-2','yyyy-mm-dd'));
insert into ta values('2012-1-1',to_date('2012-1-1','yyyy-mm-dd'));
select * from ta;
--select va, to_char(va,'yyyymmdd'),da, to_char(da,'yyyymmdd') from ta ; -- 报错
select da, to_char(da,'yyyymmdd') from ta ;

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网