问题描述:
早上在提测的时候发现一个问题,前端传参是查询1月7日0点~1月7日24点的数据
mybatis查询出来却有9条(包含6号的数据)。
原因分析:
将日志打印的Sql以及传参放到mysql中直接查询,数据正常(4条,只有7号的数据)。
网上搜了一下应该是数据库时区的问题。
这边引用一下网上的回答:
CST时间
CST时间有四种解释,所以不同项目中可能代码的意义不一样,比如Mysql和Java。这也是这次错误的主要原因。Java和Mysql协商时区时把Mysql的CST时间当成了美国中部时间既UTC-5(美国从“3月11日”至“11月7日”实行夏令时,美国中部时间改为UTC-05:00,其他时候是UTC-06:00)。我们国家是UTC+08:00时区,所以差了13个小时(13小时还是14小时,取决于你传递给数据库的时间)
- 美国中部时间 Central Standard Time (USA) UTC-05:00 / UTC-06:00
- 澳大利亚中部时间 Central Standard Time (Australia) UTC+09:30
- 中国标准时 China Standard Time UTC+08:00
- 古巴标准时 Cuba Standard Time UTC-04:00
<