Есть ли способ в XQuery получить текущее время в миллисекундах с некоторой эпохи?

XQuery предлагает различные функции date/time, такие как current-dateTime(), однако я не могу найти тот, который дает мне время в миллисекундах с момента Epoch. Функции для извлечения часов, минут и секунд кажутся слишком индивидуальными.

Каков правильный способ получить время Epoch (т.е. время unix или подобное) в XQuery?

Ответ 1

(current-dateTime() - xs:dateTime("1970-01-01T00:00:00-00:00")) div xs:dayTimeDuration('PT0.001S')

возвращает количество секунд в виде длительности, а затем делит на 1 миллисекунду, чтобы получить число миллисекунд в виде числа.

Ответ 2

Благодарю вас за советы. Я изменяю код для Oracle Service Bus 11g (OSB 11g) Редактор Xpath на тот случай, если кому-то это понадобится

{ (fn:current-dateTime() - xs:dateTime("1970-01-01T00:00:00-00:00")) div xdt:dayTimeDuration("PT0.001S") }

Ответ 3

Дополнительные трюки в 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")) }

Ответ 4

Xdt не берет в редакторе xquery