質問

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"を受信するにはどうすればよいですか?のみ?私のプログラムでは、フィールドがTIMESTAMPである場合にメタデータを確認してから「.0」をカットできますが、もっと簡単な方法があるはずです。

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

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

編集 私がテストした他のすべてのJDBCドライバー(OracleおよびPostgreSQL)は、getString()を使用するとミリ秒のタイムスタンプ列を表示するようです。そこで、トッドが提案したソリューションを使用しました。 metatdataをチェックし、列がTimestampの場合、getTimestamp()を使用してフォーマットします。

役に立ちましたか?

解決

JDBCを使用している場合は、rs.getDate(column)またはrs.getTimestamp(column)メソッドを使用できます。これらのメソッドは、それぞれDateおよびTimestampオブジェクトを返します。次に、時間を直接表現する文字列ではなく、時間を表すオブジェクトを作成します。 DateまたはTimestampを使用すると、 dateを使用できます。フォーマッタを使用して、選択した時間の文字列表現にフォーマットします。

更新(以下のコメントを読んだ後): getDate()を使用する場合、Timestamp列に対しても機能します。精度を秒単位に下げるだけです。そうすれば、メタデータを確認する必要はなく、列が何らかの種類のタイムスタンプまたは日付であることを知るだけです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top