XMLGregorianCalendar を Oracle Timestampformat に変換する必要があります
私のデータベースのデータ型は Timestamp 形式です。
Java を使用してクエリを実行しようとしています。
デフォルトでは、XMLGregorianCalendar#toString()
メソッドは日付文字列をISO 8601
「YYYY-MM-DDThh:mm:ssTZD」の形式で返します。たとえば、「2014-12-10T12:49:28-08:00」で、「T」は時間の区切り文字です。 . ショートカット ハックは、'T' をスペースに置き換えることですが、私の意見では、それは好ましいオプションではありません。
TO_TIMESTAMP()
「YYYY-MM-DD HH24:MI:SS.FF3」のようなOracle の関数と互換性のある形式の日付文字列が必要なため、これを java.sql.Timestamp に変換できます。ミリ秒。
XMLGregorianCalendar now = new XMLGregorianCalendar();
GregorianCalendar calenderNow = now.toGregorianCalendar();
Timestamp createOnTimestamp = new Timestamp(calenderNow.getTimeInMillis()));
タイムスタンプをフォーマットされた文字列として準備済みステートメントに渡す必要がある場合は、次のようにすることができます。
String createdOnString = createOnTimestamp.toString();
//returns yyyy-MM-dd HH:mm:ss.SSS
または、使用したい特定の形式がある場合:
String createdOnString = new SimpleDateFormat("yourformat").format(createOnTimestamp);
*注意: 次のクエリを実行すると、Oracle のデフォルトのタイムスタンプ形式を確認できます。
SELECT value FROM v$nls_parameters WHERE parameter = 'NLS_TIMESTAMP_FORMAT';