翻阅无数博客——网上好多博客都是改系统或者数据库时区,经过修改如下图过程:第一张图截图没截好,是有个下划线的
觉得应该没问题了,但很遗憾,没有用,使用sql语句新增或修改数据时间字段依然会自动减少8小时整,但是使用Navicat Premium 12可视化工具直接修改时间就没问题。
但是现在要写进java程序,这个可视化肯定不行,还是要链接数据库写sql的,于是在网上找到好多连接数据库url后面拼接
1.配置mybatis自定义类型转换器
2.mybatys配置文件
3.application.yml配置
4.mapper.xml文件
注意区分mapper.xml中时间字段指定的java类型而不是jdbc类型,这样先加8,反正到数据库会自动减8,
虽然总感觉这不是正解,但是也莫得其他办法了,因为网上其他办法都已经试过了,没有用!!!
不必郁闷,问题不一定出在服务端。
假设时间存储的是用timestamp表示,值为0,你想想 —— 你现在打印出来应该是什么时间值?
又假设,你现在在美国,打印出来应该怎么显示?
如果是多平台客户端,我很多时候是直接放弃DateTime类型的,直接存储long值,这样反而简化,时间显示的问题不必去折腾,免得android显示不一样,windows显示不一样。
这跟编码一样,服务器需要设置,实际上客户端仍然需要设置,否则两边没法对上号,出来的就是乱码。
但是那边要求根据时间区间查找对应时间段的信息,如果不用时间去存储这个功能怎么做呢,时间存储的话这八个小时影响挺大的,我总不能和他们说你们存储信息的时候多存八个小时吧😄,。现在问题是只有sql语句存在这样的问题,可视化操作是非常正常的,时区什么的我都有调整,没有用耶
@myzy: 注意看内容,值也许根本就是对的,比如就是你要求的0时区的时间,但是显示是可以不同的。你分别用不同客户端显示是可能这种问题存在的。
你管他客户端什么时区,反正根据本地TimeZone转成一个统一的基准时间去判断就行了。
@花飘水流兮: 并不是客户端的原因,我在服务器登录MySQL直接SQL语句执行,数据库里的时间就已经少了8小时
@花飘水流兮: 是在本地测试运行就已经是这样了,无论是我自己本地还是服务器,我都已经调整了时区,完全是对应上的