我有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 Dynamic Server版本11.50.TC2DE

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

修改 看起来我测试的所有其他JDBC驱动程序(Oracle和PostgreSQL)如果使用getString(),则显示带有毫秒的Timestamp列。所以我使用了托德提出的解决方案。我检查metatdata,如果列是Timestamp,那么我使用getTimestamp()并格式化它。

有帮助吗?

解决方案

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top