mysql中的UTC日期

我有一个表格,其数据类型为DATETIME。 我使用java在此表中保留记录,并按如下方式计算当前日期。

Date date = Calendar.getInstance(TimeZone.getTimeZone("UTC")).getTime(); 

但是当我检查我的桌子时,它再次将此时间转换为当地时区。

有人可以向我解释,如何在数据库中以UTC时区存储日期。

@码

我有一个db实体’Referral’对应于具有日期成员数据类型的表作为java.util.Date并使用hibernate来保存它。

 Referral ref = new Referral(); ref.setCreationDate(Calendar.getInstance(TimeZone.getTimeZone("UTC")).getTime()); referralDAO.save(ref); 

谢谢

Jitendra

MySql DATETIME以时区无关的方式存储。 它只存储年/月/日/小时/分钟/秒

您如何理解该信息取决于您和您的应用程序。 如果您将其存储为UTC,那么当您检索它时,您必须确保将其解释为UTC。

您可能对此问题感兴趣: 如何在Java中获取UTC或GMT中的当前日期和时间?

如该问题的答案所述:

java.util.Date 始终为UTC。 是什么让你觉得它是在当地时间? 我怀疑问题是你通过使用本地时区的Calendar实例显示它,或者可能使用也使用本地时区的Date.toString()。

Java中的日期只是一个漫长的过程。 它与任何时区无关。 通过JDBC驱动程序将日期/时间戳传递给数据库时,它会将其解释为会话时区(即JVM时区)中的时间。

某些数据库(如Oracle和PostgreSQL)的数据类型为TIMESTAMP WITH TIMEZONE。 我不相信MySQL有它。 您可以将JVM时区切换为UTC或使用字符串字段,并使用SimpleDateFormat格式化Date。