1

テーブルを監視する tibco adb アダプターを使用して XML メッセージを発行しようとしています。日付をミリ秒単位の long 値として格納する列がテーブルにあります。XML マーシャリングの一部として、この long 値を日付に変換する方法はありますか?

-ティア

4

5 に答える 5

3

次の x-path を使用して、ミリ秒を datetime xml 値に変換できます。

tib:add-to-dateTime(tib:translate-timezone('1970-01-01T00:00:00Z',  tib:get-timezone-from-dateTime(current-dateTime())), 0, 0, 0, 0, 0, (<your input in ms> div 1000))

これが行うことは次のとおりです。

1) タイムゾーンを見つけます:

tib:get-timezone-from-dateTime(current-dateTime())

2) 基準日 (1970-01-01) を正しいタイムゾーンに移動します。

tib:translate-timezone('1970-01-01T00:00:00Z' <result above>)

3) 入力エポックに秒数を追加します。

tib:add-to-dateTime(<result above>, 0, 0, 0, 0, 0, (<your input in ms> div 1000))

このソリューションの欠点は、ミリ秒の精度が失われることに注意してください。最終日時は秒単位です。

最終結果でミリ秒を維持する必要がある場合は、これを外部 Java ライブラリに委譲することをお勧めします (誰かが既に提案したように)。資源。

于 2014-01-16T19:46:27.923 に答える
1

これを行うには、カスタムJavaプロセスを作成する必要がありました-誰かがそれを便利だと思った場合に備えて

于 2010-04-01T17:58:28.753 に答える
0

私はこれにかなり遭遇しました。Adbのオプションを使用して、すべてのデータを他のテーブルに書き込みます。次にできることは次のとおりです

オプション11.他のテーブルのデータ型をvarcharに変更します。2。トリガーを更新してe変換を実行します。3。スキームをbwで更新します。-これにより、Adbの更新にGUIを使用できなくなります

オプション2Adbに使用する別のパターンは、アクションのトリガーとしてAdbを使用することです。したがって、Adbからのすべての情報を使用する代わりに、キーを使用します。ストアドプロシージャへのコールバックを実行して、残りのプロシージャを取得します。ここで、フォーマットの問題を修正します。

したがって、bwでdb呼び出しを行うことに慣れている場合は、2番目のオプションがはるかに簡単でエラーが発生しにくくなります。Tibcoを約3年間使用しており、アクティブなデータベースアダプタにいくつかの制限があることがわかりました。舞台裏では、XMLがシリアル化されたテーブルプーリーであり、メッセージをキュー/トピックに配置します。

オプション3私が使用したもう1つのオプションは、BWプロセスでかなり複雑なマッパーを作成することです。スペースを検索し、「t」に置き換えます。
お役に立てれば

于 2013-01-22T02:12:52.187 に答える