oracle.sql.TIMESTAMPTZとDbUnitの標準JDBCクラス間の変換
質問
Oracle 10gを実行していますが、Type_Nameの列があります
TIMESTAMP(6) WITH TIME ZONE
Javaクラスに拡張すると、次のようになります
oracle.sql.TIMESTAMPTZ
ただし、DbUnitは、XMLに書き込むためにOracle固有のクラスを文字列に変換することはできません。これらのOracle固有のタイムスタンプをjava.sqlの何かに変換する簡単な方法(たとえば、SELECTステートメントで)があるかどうか疑問に思っています
解決
この問題を正確に処理する必要はありませんでしたが、SELECTクエリの文字列として問題を解決できると思います。
to_char を使用できます。関数。文字列に変換します。例:
SQL> select to_char(systimestamp, 'YYYY-MM-DD HH24:MI:SS.FF TZD') as d from dual;
D
----------------------------------
2008-10-21 17:00:43.501591
これは、プログラムから文字列として認識されます。 TZD
にはタイムゾーン情報が含まれます(この例にはありません)
後で、これは SimpleDateFormat クラス。
または、 oracle.sql。 TIMESTAMPTZ クラスには、 java.sql.Date
クラスを返す dateValue
というメソッドがあります。
他のヒント
ISO年を取得したいのでなければ、年の形式としてIYYYを使用するのは良い考えではない可能性があることに注意してください。 IYYYの代わりにYYYYを使用する必要があります。
次を使用して2012年12月31日のSQLを実行してみてください
select to_char(timestamp'2012-12-31 00:00:00 +00:00', 'IYYY-MM-DD HH24:MI:SS.FF TZD') as d from dual;
returns" 2013-12-31 00:00:00.000000000"予想される年ではありません。
所属していません StackOverflow