Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将java.util.Date存储到MySQL datetime时的舍入问题_Mysql_Hibernate_Datetime - Fatal编程技术网

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

将java.util.Date存储到MySQL datetime时的舍入问题,mysql,hibernate,datetime,Mysql,Hibernate,Datetime,MySQL数据库列: PLANNING_DATE datetime Java字段: private java.util.Date planningDate; 休眠映射: <property name="planningDate" column="PLANNING_DATE" type="timestamp" not-null="true"/> 问题是: MySQL数据库中的planningDate并不总是匹配planningDate字段。有时,它的偏移量为1秒。这是一个取整

MySQL数据库列:

PLANNING_DATE datetime
Java字段:

private java.util.Date planningDate;
休眠映射:

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

问题是:
MySQL数据库中的
planningDate
并不总是匹配
planningDate
字段。有时,它的偏移量为1秒。这是一个取整的问题吗?

我对MySql或Hibernate都不太了解,但现在

A) 您可能应该使用java.sql.Date。它是java.util.Date的一个精简子类,用于JDBC


B) 他们确实提到,他们的日期时间类型不存储秒的小数部分。因此,也许正在发生这种情况。但是文档中提到了截断。

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

A) 您可能应该使用java.sql.Date。它是java.util.Date的一个精简子类,用于JDBC


B) 他们确实提到,他们的日期时间类型不存储秒的小数部分。因此,也许正在发生这种情况。但是文档提到了截断。

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


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

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


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

为什么不使用
java.sql.Date
?我还需要存储时间信息:小时、分钟、,秒。
java.sql.Timestamp
有一个时间组件。为什么不使用
java.sql.Date
?我还需要存储时间信息:小时、分钟、秒。
java.sql.Timestamp
有一个时间组件。我也有同样的问题。你能分享一下定制代码吗?我也有同样的问题。你能分享一下定制代码吗。