我做了个实验。
在orale数据库有张学生表.其中一个字段是timestamp类型
1.设置当前时区为GMT+1.
TimeZone.setDefault(TimeZone.getTimeZone("GMT+1"));
2.存入一条记录到该表中。
3.吧系统的时区设置成GMT+0.
4.读取setp2插入的数据。发现得到的时间字段的time值比之前大36000毫秒。正好是插入和读取的时间差。不知为什么会多?

解决方案 »

  1.   

    把你的 insert 语句 和 select 语句,及建表语句都发上来;
      

  2.   

    Oracle和MySQL中的timestamp的作用是不同的Oracle中,TIMESTAMP是对date的更高精度的一种存储,是作为datetime的延展,但它不存储时区信息Oracle中,TIMESTAMP WITH TIME ZONE存储时区信息Oracle中,TIMESTAMP WITH LOCAL TIME ZONE不会存储时区信息,将时间数据转换为数据库时区的时间数据进行存储,但不存储时区信息;客户端检索时,oracle会将数据库中存储的时间数据转换为客户端session时区的时间数据后返回给客户端MYSQL中,的TIMESTAMP是为了更少的存储单元(DATETIME为4字节,TIMESTAMP为1个字节)但是范围为1970的某时的开始到2037年,而且会根据客户端的时区判断返回值,MYSQL的TIMESTAMP时区敏感这点和ORACLE的TIMESTAMP WITH LOCAL TIME ZONE一致。
    原文:https://www.cnblogs.com/scoopr/p/5592339.html