我将时间戳从数据库读入字符串,如下所示:
源数据库表时间戳字段值如下:
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点。
如何保留原始时间戳值?
答案 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());
答案 1 :(得分:0)
我不明白这个TS到String,String到TS ......但是......
如果2.B == true:
也许这是正确的:
ps.setTimestamp(1, new java.sql.Timestamp(item.getMyTimeStamp().getTime()));