Очень часто требуется преобразовать дату в формат XML (YYYY-MM-DD HH24:MI:SS)
Есть несколько способов это сделать:
Есть несколько способов это сделать:
- Использовать выражение(Expression) для преобразования.
Плюсы:
- при использовании мэппинга(DTE) не возникает ошибка преобразования дат ()
Минусы:
- нужно использовать мэппинг(DTE).
- человеческий фактор, при добавлении новых полей с датой, необходимо помнить о необходимости их преобразования.
Пример выражения.
Right([Date of Birth], 4) + "-" + Left([Date of Birth], 2) + "-" + Mid([Date of Birth], 4, 2) - Использовать входной аргумент "UTCCanonical" при вызове сервиса EAI Siebel Adapter
Плюсы:
- Автоматическое преобразование формата для всех полей с типом дата.
- Не требуется мэппинг данных (DTE)
Минусы:
- При использовании мэппинга, в случае если будет происходить мэппинг из полученного таким образом компонента, поля с датами будут иметь не корректные значения.
(Doc ID 1073574.1)
(Doc ID 1258715.1)
Тип данных на поле в IC | UTCCanonical=N | UTCCanonical=Y |
---|---|---|
DTYPE_UTCDATETIME | 05/31/2018 12:41:19 | 2018-05-31T12:41:19Z |
DTYPE_DATETIME | 05/31/2018 12:41:19 | 2018-05-31 12:41:19 |
DTYPE_DATE | 05/31/2018 | 2018-05-31 |
Спасибо. UTCCanonical оказалось очень удобная штука. Не знал и извращался.
ОтветитьУдалитьЭтот комментарий был удален автором.
ОтветитьУдалитьНедавно потребовалось для проекта отображать дату в формате YYYY-MM-DDTHH:mm:ss+HH:MM - не Z (локальное время), а указывать сдвиг (+HH:MM)
ОтветитьУдалитьСделал так:
ToChar([Planned], 'YYYY-MM-DDTHH:mm:ss') + ToChar(UtcOffset([Planned], 'Newfoundland Standard Time') / 60,'+00:') + Right(ToChar((UtcOffset([Planned], 'Newfoundland Standard Time') - 60*(UtcOffset([Planned], 'Newfoundland Standard Time')/60)), '00'), 2)
здесь:
Поле в формате DateTime
Newfoundland Standard Time - нужная временная зона из с экрана Administration Data -> Time Zones