将 java.util.Date 存储到 MySQL 日期时间的舍入问题

tux*_*uxx 0 mysql datetime hibernate

MySQL 数据库列:

PLANNING_DATE datetime
Run Code Online (Sandbox Code Playgroud)

Java 领域:

private java.util.Date planningDate;
Run Code Online (Sandbox Code Playgroud)

休眠映射:

<property name="planningDate" column="PLANNING_DATE" type="timestamp" not-null="true"/>
Run Code Online (Sandbox Code Playgroud)

问题: PLANNING_DATE在 MySQL DB 中并不总是匹配planningDate字段。有时,它会得到 1 秒的偏移量。这是一个四舍五入的问题吗?

tux*_*uxx 5

好的,我认为这是因为在 MySQL >= 5.6.4 中,默认情况下他们将 DATETIME 更改为截断小数秒。我更新了我们的表模式以使用新的 DATETIME(6)。我会检查这是否确实是原因。

http://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html

编辑:实际上,MySQL 中的 DATETIME >= 5.6.4(相当于 DATETIME(0))舍入到秒精度,而不是 Oracle 中的 DATE 截断。添加了自定义的 Hibernate 类型来进行截断而不是舍入,问题解决了。