2

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 JDBC Driver for IBM Informix Dynamic Server 3.50.JC3DE

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

4

1 に答える 1

3

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

更新(以下のコメントを読んだ後): getDate() を使用すると、タイムスタンプ列でも機能します。精度を秒単位まで下げるだけです。そうすれば、メタデータをチェックする必要はありません。列がある種のタイムスタンプまたは日付であることを知るだけで済みます。

于 2009-01-02T16:48:04.837 に答える