【问题标题】:retaining time stamp hour value while conversion from String to Timestamp从字符串转换为时间戳时保留时间戳小时值
【发布时间】: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 存储在一个整数中,然后想知道你的精度去了哪里。

标签: java sql db2 timestamp


【解决方案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

【讨论】:

  • 当然,即使这样您也可能会遇到问题——即,DB2 中的时间戳缺少时区说明符。因此,如果您的应用程序服务器设置为与 DB2 实例不同的东西,那么无论如何您都可能会得到修改时间。
【解决方案2】:

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

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

如果 2.B == 真:

也许这是正确的:

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

【讨论】:

  • 没有。 item.getMyTimeStamp() 返回我正在谈论的字符串值。格式为:java.text.DateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd");
  • 你不能改变getMyTimeStamp的任何东西吗?可以发布“项目”对象的代码吗?如果您可以更改 getMyTimeStamp() 以返回全精度并更改 DateFormat 的模式...问题解决了。
  • getMyTimeStamp() 确实返回全精度。问题只是模式。我找不到我需要的正确模式。
  • 如果您打印 getMyTimeStamp() 的字符串值,您可以在 SimpleDateFormat 中找到模式,例如... "yyyy-MM-dd HH:mm:ss"
猜你喜欢
  • 2020-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多