Есть ли способ в XQuery получить текущее время в миллисекундах с какой-то эпохи? - PullRequest
11 голосов
/ 20 сентября 2011

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

Как правильно получить время эпохи (то есть время Unix или подобное) в XQuery?

Ответы [ 3 ]

26 голосов
/ 20 сентября 2011
(current-dateTime() - xs:dateTime("1970-01-01T00:00:00-00:00")) div xs:dayTimeDuration('PT0.001S')

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

4 голосов
/ 21 ноября 2011

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

{ (fn:current-dateTime() - xs:dateTime("1970-01-01T00:00:00-00:00")) div xdt:dayTimeDuration("PT0.001S") }
0 голосов
/ 17 мая 2017

Дополнительные приемы по Ответ Адитьи для OSB 11 г.

В редакторах XQ есть досадная ошибка, из-за которой операторы div и в (запятую).

Просто поместите функцию преобразования перед этим кодом.такие как xs: long, xs: string

ex.

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