用一个类似于sqlplus的工具查数据库里面一个表的数据时发现了一个奇怪的情况
往一个表里面插上一条数据
insert into test_table(RTIME) values (to_date('2001-01-01 14:00:00', 'yyyy-mm-dd hh24:mi:ss'));再把这条数据查出来,发现偏差了14个小时
select RTIME from test_table order by 1;RTIME
-------------------
2001-01-01 00:00:001 rows selected.换一个同义的sql语句查却查出正确结果
select to_char(RTIME, 'yyyy-mm-dd hg24:mi:ss') from test_table order by 1;
RTIME
-------------------
2001-01-01 14:00:001 rows selected.
不知道大家有没有碰上过? 可能是什么原因导致的呢?工具本身应该没有bug,在别的机器上是可以得出正确结果的

解决方案 »

  1.   

    select RTIME from test_table order by 1; 的时间格式是yyyy-mm-dd 吧 ,所以不会显示后面的内容
    修改一下客户端的时间格式为yyyy-mm-dd hh24:mi:ss
      

  2.   

    不会吧,我把RTIME设制成DATE型的,用select RTIME from test_table order by 1查询出来的是“2001-01-01 14:00:00 
    ”值呀
      

  3.   

    问题解决了 是时区设置+程序bug(计算时间是用了八时区而不是根据机器时区调整)导致的