【发布时间】:2012-05-18 07:59:30
【问题描述】:
我有一个java.util.Date 对象,我需要将它以UTC 格式插入到MySQL 的日期时间字段中。
java.util.Date date = myDateFromSomewhereElse;
PreparedStatement prep = con.prepareStatement(
"INSERT INTO table (t1, t2) VALUES (?,?)");
java.sql.Timestamp t = new Timestamp(date.getTime());
prep.setTimestamp(1, t, Calendar.getInstance(TimeZone.getTimeZone("PST"));
prep.setTimestamp(2, t, Calendar.getInstance(TimeZone.getTimeZone("UTC"));
System.out.println(prep.toString());
这给了我准备好的 SQL 语句字符串:
INSERT INTO table (t1, t2) VALUES ('2012-05-09 11:37:08','2012-05-09 11:37:08');
无论我指定的时区如何,返回的时间戳都是相同的时间戳。它忽略了我指定的带有时区的 Calendar 对象。发生了什么事,我做错了什么?
【问题讨论】:
-
时区不会更改时间戳。它们只是更改日期呈现时显示的内容。
-
是的,我知道时间戳只是自 GMT 纪元以来的毫秒数,与时区无关。我的问题是,即使指定了时区,它也会呈现完全相同的显示日期(请注意,即使我指定了不同的时区,日期在最终 SQL 命令中也呈现完全相同)。
-
我想这可能就是你要找的东西:puretech.paawak.com/2010/11/02/…
标签: java mysql timezone timestamp