1


0

タイムスタンプフィールドがYEAR TO SECONDとして定義されたInformixデータベースがあります。 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"のみを受け取るにはどうすればよいですか? 私のプログラムでは、fieldがTIMESTAMPかどうかメタデータをチェックしてから ".0"をカットすることができますが、もっと簡単な方法があるべきだと思います。

サーバーのバージョン:IBM Informix Dynamic Serverバージョン11.50.TC2DE

クライアントバージョン:IBM Informix Dynamic Server 3.50.JC3DE用のIBM Informix JDBCドライバ

*編集*私がテストした他のすべてのJDBCドライバ(OracleとPostgreSQL)は、getString()を使用するとタイムスタンプ列をミリ秒で表示します。 そこで私はToddによって提案された解決策を使いました。 メタデータをチェックし、カラムがタイムスタンプの場合はgetTimestamp()を使用してフォーマットします。

1 Answer


3


JDBCを使用している場合は、それぞれDateオブジェクトとTimestampオブジェクトを返すrs.getDate(column)メソッドまたはrs.getTimestamp(column)メソッドを使用できます。 それから、直接それを表現する文字列ではなく、時間を表現するオブジェクトがあります。 DateまたはTimestampでは、 date formatを使用して、その時刻の任意の文字列表現にフォーマットできます。選んで。

更新(下記のコメントを読んだ後):getDate()を使っても、Timestampカラムでは動作します。 それはちょうど2番目まで精度を下げるでしょう。 そうすれば、メタデータをチェックする必要がなくなり、列がある種のタイムスタンプまたは日付であることを知るだけで済みます。