2011-09-20 19 views
11

XQuery cung cấp nhiều chức năng khác nhau như date/time như current-dateTime(), tuy nhiên tôi dường như không thể tìm thấy cái đã cho tôi thời gian trong mili giây từ Epoch. Các hàm để trích xuất giờ, phút và giây dường như tồn tại quá riêng lẻ.Có cách nào trong XQuery để có được thời gian hiện tại tính bằng mili giây từ một số Epoch không?

Cách đúng để có được thời gian Epoch (tức là thời gian unix hoặc tương tự) trong XQuery?

Trả lời

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

trả về số giây làm thời lượng và sau đó chia cho 1 giây để lấy số mili giây làm số.

+0

Cảm ơn, tôi nghĩ rằng có thêm dấu ngoặc gần sau ngày giờ và để thực thi đúng, nó cần phải là xs: dateTime. – jbx

+0

Có thể là một ý tưởng tốt để luôn sử dụng dấu ngoặc đơn hoặc kép. Nếu điều này được sử dụng làm giá trị của thuộc tính 'select' của một thẻ XSLT thì nó sẽ xung đột với các dấu ngoặc kép của thuộc tính đó. –

+0

đây là gì 1970-01-01? Tại sao bạn trừ currentTime với điều này? – basari66

4

cảm ơn bạn đã biết các mẹo. Tôi sửa đổi mã cho Oracle Service Bus 11g (OSB 11g) biên tập XPath trong trường hợp ai đó cần nó

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

thưa ông, đã cứu ngày của tôi, cảm ơn bạn rất nhiều – Tol182

0

thủ thuật khác liên quan đến Aditya của câu trả lời cho OSB 11g.

Có có một lỗi gây phiền nhiễu trên các biên tập viên XQ đó sẽ thay đổi divhành thành, (dấu phẩy).

Chỉ cần đặt một hàm chuyển đổi ở phía trước mã đó. chẳng hạn như xs: long, xs: string

ví dụ:

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

thú vị ... –

Các vấn đề liên quan