将java.util.Date存储到MySQL datetime的舍入问题

时间:2013-12-31 17:52:53

标签: mysql hibernate datetime

MySQL DB专栏:

PLANNING_DATE datetime

Java字段:

private java.util.Date planningDate;

Hibernate映射:

<property name="planningDate" column="PLANNING_DATE" type="timestamp" not-null="true"/>

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

2 个答案:

答案 0 :(得分:4)

好吧,我认为这是因为在MySQL&gt; = 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类型来进行截断而不是舍入,问题就解决了。

答案 1 :(得分:0)

我对MySql或Hibernate都不太了解,但这里有......

A)您可能应该使用java.sql.Date。它是java.util.Date的瘦子类,意味着可以与JDBC一起使用。

B)MySql doc确实提到他们的日期时间类型不存储秒的小数部分。所以也许正在进行四舍五入。但是文档提到了截断。