2

Oracle 10g を実行していて、Type_Name の列があります

TIMESTAMP(6) タイムゾーン付き

Java クラスに膨らませると、次のようになります。

oracle.sql.TIMESTAMPTZ

しかし、DbUnit は、XML に書き込むために Oracle 固有のクラスを文字列に変換することを処理できません。これらの Oracle 固有のタイムスタンプから java.sql の何かに (たとえば、私の SELECT ステートメントで) 変換する簡単な方法があるかどうか疑問に思っています。

4

2 に答える 2

1

この問題に正確に対処する必要はありませんでしたが、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クラスを使用して Java で解析できます。

または、oracle.sql.TIMESTAMPTZdateValueクラスには、クラスを返すメソッドが呼び出されますjava.sql.Date

于 2008-10-21T21:04:04.260 に答える
1

本当に ISO 年を取得したい場合を除き、IYYY を年の形式として使用することはお勧めできません。IYYY の代わりに YYYY を使用する必要があります。

を使用して 31.12.2012 の 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;

期待する年ではない "2013-12-31 00:00:00.000000000" を返します。

于 2011-10-12T14:18:57.753 に答える