【发布时间】:2011-05-23 15:58:31
【问题描述】:
我有一个表,其字段的数据类型为 DATETIME。我使用 java 在此表中保留一条记录,并按如下方式计算当前日期。
Date date = Calendar.getInstance(TimeZone.getTimeZone("UTC")).getTime();
但是当我检查我的表格时,它再次将这个时间转换为本地时区。
有人可以向我解释一下,如何在数据库中以 UTC 时区存储日期。
@代码
我有一个数据库实体 'Referral' 对应于日期成员数据类型为 java.util.Date 的表,并使用休眠来保存它。
Referral ref = new Referral();
ref.setCreationDate(Calendar.getInstance(TimeZone.getTimeZone("UTC")).getTime());
referralDAO.save(ref);
谢谢
吉腾德拉
【问题讨论】:
-
向我们展示您用于检索和解释 DATETIME 的代码,这可能是问题所在。
-
数据库连接属性是否与它有关?
-
在您的代码中,当您调用 calendarInstance.getTime() 时,您所做的所有时区工作都会丢失。两个问题: 1. 你确定没有存储正确的值吗?尝试更改机器的时区。如果结果随后以新时区显示,则您的数据是正确的,这只是一个演示问题。 2. 您的数据库架构是什么——您使用的是 DateTime 还是 Timestamp?见dev.mysql.com/doc/refman/5.1/en/datetime.html
-
我在 mysql 中使用 DateTime。我直接使用mysql客户端查看数据库记录。
-
@dilium, "在您的代码中,当您调用 calendarInstance.getTime() 时,您所做的所有时区工作都将丢失。" 那么我们如何在 UTC 中保留时间。
标签: java mysql datetime timestamp