为什么数据库在不同时区读取timestamp类型数据值不同

keepmoving_Jerry 2016-05-22 04:09:57
我做了个实验。
在orale数据库有张学生表.其中一个字段是timestamp类型
1.设置当前时区为GMT+1.
TimeZone.setDefault(TimeZone.getTimeZone("GMT+1"));
2.存入一条记录到该表中。
3.吧系统的时区设置成GMT+0.
4.读取setp2插入的数据。

发现得到的时间字段的time值比之前大36000毫秒。正好是插入和读取的时间差。不知为什么会多?
...全文
1027 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
java悟空 2018-09-30
  • 打赏
  • 举报
回复
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
卖水果的net 2016-05-22
  • 打赏
  • 举报
回复
把你的 insert 语句 和 select 语句,及建表语句都发上来;

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧