【问题标题】:Informix JDBC timestamp string formatInformix JDBC 时间戳字符串格式
【发布时间】:2010-12-29 17:23:08
【问题描述】:

我有 Informix 数据库,其中时间戳字段定义为 YEAR TO SECOND。 当我使用 JDBC rs.getString(column) 显示这个字段时,它使用毫秒格式,所以这个字段看起来像:

2008-12-18 13:58:14.0

我希望它只使用 YEAR TO SECOND 字段。我设置环境变量:

GL_DATETIME=%Y-%m-%D %H:%M:%S

但即便如此,我也有几毫秒。使用 ODBC 的程序不显示毫秒。如何仅接收 TIMESTAMP 字符串“YEAR TO SECOND”?在我的程序中,如果字段是 TIMESTAMP,我可以检查元数据,然后剪切“.0”,但我认为应该有更简单的方法。

服务器版本: IBM Informix 动态服务器版本 11.50.TC2DE

客户端版本: 适用于 IBM Informix Dynamic Server 3.50.JC3DE 的 IBM Informix JDBC 驱动程序

编辑 如果我使用 getString(),我测试的所有其他 JDBC 驱动程序(Oracle 和 PostgreSQL)看起来都以毫秒为单位显示时间戳列。所以我使用了托德提出的解决方案。我检查元数据,如果列是时间戳,那么我使用 getTimestamp() 并对其进行格式化。

【问题讨论】:

  • 感谢您提供优质的版本信息。有帮助!

标签: jdbc format timestamp informix


【解决方案1】:

如果您使用 JDBC,则可以使用 rs.getDate(column) 或 rs.getTimestamp(column) 方法,它们分别返回 Date 和 Timestamp 对象。然后你有一个代表时间的对象,而不是一个直接表达它的字符串。使用日期或时间戳,您可以使用 date formatter 将其格式化为您选择的那个时间的任何字符串表示形式。

更新(在阅读下面的 cmets 之后): 如果您使用 getDate(),它仍然适用于 Timestamp 列。它只会将精度降低到秒。这样您就不必检查元数据,您只需知道该列是某种时间戳或日期。

【讨论】:

  • 好的。但是我的程序做报告,用户可以选择任何表和字段,所以如果返回的列是日期/时间戳类型,这个解决方案需要检查 ResultSet 元数据。我想到了更通用的解决方案。
猜你喜欢
  • 2018-07-26
  • 1970-01-01
  • 2016-11-10
  • 1970-01-01
  • 2018-10-11
  • 1970-01-01
  • 2016-05-24
  • 1970-01-01
  • 2018-09-09
相关资源
最近更新 更多