Tibco Businesswork, формат отметки времени в длинных до мм / дд / гггг - PullRequest
0 голосов
/ 18 февраля 2010

Я пытаюсь опубликовать сообщение XML с помощью адаптера tibco adb, который отслеживает таблицу. В таблице есть столбец, в котором дата хранится в виде длинного значения в миллисекундах. Есть ли способ, которым мы можем преобразовать это длинное значение в дату как часть сортировки XML?

-tia

Ответы [ 4 ]

2 голосов
/ 16 января 2014

Вы можете перевести миллисекунды в значение xml datetime со следующим x-path:

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 (как кто-то уже предлагал). Вы можете легко сделать метод Java доступным в приложении Maper, импортировав его через Ресурс пользовательской функции Java.

1 голос
/ 01 апреля 2010

Мне пришлось написать собственный процесс Java, чтобы сделать это - на всякий случай, если кто-то найдет это полезным

0 голосов
/ 08 января 2015

Это работает для меня, и, взяв полученное время даты без 'Z' в конце и добавив миллисекунды, я получаю обратно свою точность. Теперь просто отработать переход на летнее время ...

CONCAT ( подстрока ( tib: add-to-dateTime (tib: перевод-часовой пояс ('1970-01-01T00: 00: 00Z', tib: get-timezone-from-dateTime (current-dateTime ())), 0, 0, 0, 0, 0, ($ Элемент / root / s_date_in_ms div 1000)) , 1,19) , "", подстрока ($ Элемент / корень / s_date_in_ms, 12,3) )

2014-11-10T23: 02: 28,858

0 голосов
/ 22 января 2013

Я столкнулся с этим совсем немного.Мы используем опцию в Adb, чтобы записать все данные в другую таблицу.Затем вы можете сделать следующее:

Вариант 1 1. Измените тип данных другой таблицы на varchar 2. Обновите триггер, чтобы выполнить преобразование для вас 3. Обновите схему в bw.- это сделает так, что вы больше не сможете использовать графический интерфейс для обновлений Adb

Вариант 2. Альтернативный паттерн, который мы используем для Adb, заключается в использовании Adb в качестве триггера для действия.Поэтому вместо того, чтобы использовать всю информацию от Adb, мы используем ключ.Мы делаем обратный вызов хранимой процедуры, чтобы получить остальную часть.Здесь мы решаем проблему форматирования.

Так что, если вы не знаете, как делать вызов db в bw, второй вариант, безусловно, самый простой и менее подверженный ошибкам.Мы используем Tibco около 3 лет и обнаружили некоторые ограничения для активного адаптера базы данных.За кулисами это всего лишь диспетчер таблиц с сериализованным XML, который помещает сообщения в очередь / тему

Вариант 3 Другой вариант, который я использовал, - создать довольно сложный картограф в вашем процессе BW.Найдите пробел и замените его буквой "t".
Надеюсь, это поможет

...