【问题标题】:Why is the time changed when inserting in Mysql?为什么在Mysql中插入时时间会改变?
【发布时间】:2020-08-16 19:36:27
【问题描述】:

我在 Spring 中有一个带有 java 8 的代码,用于在我的 Mysql 5.7 数据库中插入当前日期和时间,问题是当我检查数据库时,它会在对应的数据库上增加一小时,数据类型在数据库是日期时间。

我已经用 SELECT @@ time_zone 检查了 Mysql 中的 time_zone,它显示了我:+ ------------- + | @@ 时区 | + ------------- + |系统 | + ------------- +

并且现在也选择();它会正确显示当前时间。

我的代码如下:

我实现它的类:

LocalDateTime actual = LocalDateTime.now();
DTO.getPer().setDateUpdate(actual);

在模型中:

@Column(name = "date_update")
private LocalDateTime dateUpdate;

谢谢。

【问题讨论】:

  • 你试过像import java.sql.Timestamp;这样private Timestamp dateUpdate;
  • MySQL 将所有日期保留在 GMT 时区,这可能是我认为的问题。
  • @SagarGangwal 是一样的。
  • @LunguDaniel mysql 时间显示正确,但仍然无法正常工作。

标签: java mysql spring


【解决方案1】:

这肯定与时区有关。您有 UTC+1 时区。 LocalDateTime 不包含此信息。请改用ZonedDateTime

@Column(name = "date_update", columnDefinition="TIMESTAMP")
private ZonedDateTime dateUpdate;

How to map a TIMESTAMP column to a ZonedDateTime JPA entity property?

【讨论】:

  • 谢谢你的回答,还是不行,我在另一台电脑上测试了应用程序,它工作正常,我检查了Mysql和Java时间,它显示了正确的时间,我目前是在 Mac OSX Catalina 上工作。
  • @Jhon 我认为您错误地使用了ZonedDateTime。能提供一个测试用例吗?可能是内存数据库?
猜你喜欢
  • 2015-05-13
  • 2017-09-25
  • 2017-10-30
  • 1970-01-01
  • 2015-09-18
  • 2015-11-26
  • 2013-03-05
  • 2011-02-16
  • 1970-01-01
相关资源
最近更新 更多