从String转换为Timestamp时保留时间戳小时值

时间:2013-01-06 12:59:07

标签: java sql db2 timestamp

我将时间戳从数据库读入字符串,如下所示:

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

8/21/2012 2:09 AM

我在时间戳上面读到java程序中的String字段。

但是,在将其写入目标数据库表时,我正在使用以下代码将String重新转换回时间戳:

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

如何保留原始时间戳值?

2 个答案:

答案 0 :(得分: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());

以下是帖子:Convert Java String to sql.Timestamp

答案 1 :(得分:0)

我不明白这个TS到String,String到TS ......但是......

  1. 发布您在“格式”对象(SimpleDateFormat?)中使用的模式。
  2. “item.getMyTimeStamp()”有什么用? B)返回一个sql.Timestamp对象?
  3. 如果2.B == true:

    也许这是正确的:

    ps.setTimestamp(1, new java.sql.Timestamp(item.getMyTimeStamp().getTime()));