首页 新闻 会员 周边

Hibernate保存日期数据时少了一天,怎么解决呢?

0
悬赏园豆:5 [待解决问题]

liaowenxiong的主页 liaowenxiong | 初学一级 | 园豆:33
提问于:2022-07-16 12:22
< >
分享
所有回答(6)
0

后端打印出来的日志是 CST 时区。
看看数据库的时区设置的是什么,一般默认是 UTC,比CST少8小时,所以会显示上一天

wang_yb | 园豆:4891 (老鸟四级) | 2022-07-16 14:22

你的意思是?需要将数据库的时区设为CST吗?

支持(0) 反对(0) liaowenxiong | 园豆:33 (初学一级) | 2022-07-30 09:35

查看数据库的时区:

mysql> show variables like "%time_zone%";
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | CST    |
| time_zone        | SYSTEM |
+------------------+--------+
2 rows in set (0.14 sec)

得知,数据库使用的是系统时区,系统时区就是CST,那么因此数据库使用的时区是CST,不是UTC

支持(0) 反对(0) liaowenxiong | 园豆:33 (初学一级) | 2022-07-30 10:35
0

数据库打印下当前时间,看下和实际时间一样吗?

飒沓流星 | 园豆:1099 (小虾三级) | 2022-07-16 16:03

啥意思,系统时间和实际实际一样呀。

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2022-07-30 09:40:47 |
+---------------------+
1 row in set (0.01 sec)
支持(0) 反对(0) liaowenxiong | 园豆:33 (初学一级) | 2022-07-30 10:24

@liaowenxiong: 那就不是数据库的问题了,检查一下实体类里面的日期是用什么接收的,Date还是LocalDateTime,后者应该需要设置一下时区

支持(0) 反对(0) 飒沓流星 | 园豆:1099 (小虾三级) | 2022-07-30 10:27
0

看到这个标题就可以确定是时区问题

Adming | 园豆:119 (初学一级) | 2022-07-19 10:36
0

检查一下格式化时间 用标准的

小小怪l | 园豆:139 (初学一级) | 2022-07-21 14:54
0

我认为这个问题出在Java代码上。
LocalDateTime 接收的值就出现不准确了,建议直接用 LocalDate 接收,反正数据库只需要存储日期就可以。
UI传输值只是精确到日期,数据表字段也是,所以服务端做传输时不需要增加其它未知的的东西,这样反而不好。

freerPolymer | 园豆:219 (菜鸟二级) | 2022-08-16 21:27
0

检查你连接数据库的时候有没有指定时区

DanBrown | 园豆:1321 (小虾三级) | 2022-09-13 16:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册