【发布时间】:2012-12-20 09:08:30
【问题描述】:
我已将时间戳从数据库读取到如下字符串中:
源数据库表时间戳字段值如下:
8/21/2012 2:09 AM
我正在将上面的时间戳读入 java 程序中的字符串字段。
但是,在将其写入目标数据库表时,我正在使用以下代码将字符串重新转换回时间戳:
java.text.DateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd");
java.util.Date newDate = format.parse(item.getMyTimeStamp());
ps.setTimestamp(1, new java.sql.Timestamp(newDate.getTime()));
但是,目标表中的时间戳字段值如下:
8/21/2012 12:00 AM
由于明确,小时字段正在重置为上午 12 点。
如何保留原始时间戳值?
【问题讨论】:
-
你为什么在这里涉及
string?为什么不将源数据库值原样插入到目标表中? -
@bonCodigo:这是 Spring 批处理程序的一部分。我不能按照你的建议去做。我必须将字符串转换回正确的时间戳。
-
正确的时间戳是多少? Source 根据您的问题返回正确的时间戳。然后只有在转换过程中才会发疯。你有没有想过使用
prepared statment。 -
@bonCodigo:ps 是准备好的语句。用我正在使用的格式更新问题。我认为问题就在那里。但我不知道要放的正确格式值。
-
您知道时间戳有日期和时间两个部分吗?仅使用带有日期(“yyyy-MM-dd”)的 SimpleDateFormat 会截断您的时间戳。 @bonCodigo 是正确的。这就像将 Pi 存储在一个整数中,然后想知道你的精度去了哪里。