1

我将时间戳从数据库读取到一个字符串中,如下所示:

源数据库表时间戳字段值如下:

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 点。

如何保留原始时间戳值?

4

2 回答 2

1

@Nikunj 这new java.text.SimpleDateFormat("yyyy-MM-dd");实际上是在失去你的timestamp......所以它将时间设置为12AM......你需要获得精确的格式。

你能试试这个吗,假设你的字符串包含来自源数据库的正确日期,

String sourceDate = "8/21/2012 2:09";
Timestamp sourceTS = Timestamp.valueOf(sourceDate);
System.out.println(sourceTS.getNanos());

这是帖子:将 Java 字符串转换为 sql.Timestamp

于 2013-01-06T13:32:33.183 回答
0

我不明白这个 TS 到字符串,字符串到 TS ......但是......

  1. 发布您在“格式”对象(SimpleDateFormat?)中使用的模式。
  2. “item.getMyTimeStamp()”是做什么的?B) 返回一个 sql.Timestamp 对象?

如果 2.B == 真:

也许这是正确的:

ps.setTimestamp(1, new java.sql.Timestamp(item.getMyTimeStamp().getTime()));
于 2013-01-06T13:12:01.630 回答