Ответ 1
(current-dateTime() - xs:dateTime("1970-01-01T00:00:00-00:00")) div xs:dayTimeDuration('PT0.001S')
возвращает количество секунд в виде длительности, а затем делит на 1 миллисекунду, чтобы получить число миллисекунд в виде числа.
XQuery
предлагает различные функции date/time
, такие как current-dateTime()
, однако я не могу найти тот, который дает мне время в миллисекундах с момента Epoch. Функции для извлечения часов, минут и секунд кажутся слишком индивидуальными.
Каков правильный способ получить время Epoch (т.е. время unix или подобное) в XQuery
?
(current-dateTime() - xs:dateTime("1970-01-01T00:00:00-00:00")) div xs:dayTimeDuration('PT0.001S')
возвращает количество секунд в виде длительности, а затем делит на 1 миллисекунду, чтобы получить число миллисекунд в виде числа.
Благодарю вас за советы. Я изменяю код для Oracle Service Bus 11g (OSB 11g) Редактор Xpath на тот случай, если кому-то это понадобится
{ (fn:current-dateTime() - xs:dateTime("1970-01-01T00:00:00-00:00")) div xdt:dayTimeDuration("PT0.001S") }
Дополнительные трюки в Aditya answer для OSB 11g.
У редакторов XQ есть раздражающая ошибка, которая изменит div и оператор на a, (запятую).
Просто поставьте функцию преобразования перед этим кодом. такие как xs: long, xs: string
ех.
{ xs:long((fn:current-dateTime() - xs:dateTime("1970-01-01T00:00:00-00:00")) div xdt:dayTimeDuration("PT0.001S")) }
Xdt не берет в редакторе xquery