2013-11-20 5 views
0

Я бегу простой XQuery на хранилище XML, Xhive, и у меня возникают проблемы со значением возвращается к дате:XQUERY возвращения строки вместо отформатированной даты

XQUERY:

for $x in document('')[matches(xhive:metadata(., "docato-name"),"THOCEO")][xhive:metadata(., "docato-type") = 'XML_RESOURCE_TYPE'] 
return 
<file> 
     <filename>{xhive:metadata($x, "docato-name")}</filename> 
     <validated>{xhive:metadata($x,"Last Modified")}</validated> 
</file> 

Результат :

<result> 
    <file> 
     <filename>THOCEO</filename> 
     <validated>1375875821721</validated> 
    </file> 
</result> 

Я хотел бы, «Последнее изменение» дата возвращается как отформатированный дату, как он появляется в хранилище: «2013-08-07 12:43:41» не в виде строки, как указано выше ("1375875821721 ")

Я попытался вносящий изменения в запрос к "{хз: Дата (xhive: метаданные ($ х," Last Modified "))}", но это с ошибкой:

query:8:19:XQUERY_ERROR_VALUE: casting error, cannot cast '1375875821721' from xdt:untypedAtomic to {http://www.w3.org/2001/XMLSchema}date (FORG0001: Invalid value for cast/constructor.) 

Любая помощь, чтобы вернуть «Дата последнего изменения» в качестве сфабрикованной даты была бы высоко оценена!

Спасибо!

ответ

3

Да, я бы сказал, с помощью xhive: последнего изменения (.. .) это самый простой способ, но если вы действительно хотите использовать метку времени, то здесь что-то, что я использовал в прошлом:

declare function local:timestamp-to-dateTime($v) as xs:dateTime { 
    xs:dateTime("1970-01-01T00:00:00-00:00") + xs:dayTimeDuration(concat("PT", $v idiv 1000, "S")) 
}; 

local:timestamp-to-dateTime(number("1375875821721")) 
+0

Большое спасибо за это Ewout, делает трюк! Боюсь, я не могу дать вам +1 причину моей слабой репутации 1, но попытаюсь вспомнить, если я когда-нибудь доберусь до 15! – bomdiddybombom

0

Я не уверен, что это число представляет собой или как разобрать его, но вы можете попробовать xhive:last-modified() вместо этого, который возвращает xs:dateTime:

<validated>{ xhive:last-modified(fn:document-uri($x)) }</validated> 
+0

Привет, когда я пытаюсь запустить xhive: последнее изменение функции вам подробно выше, я получаю следующую ошибку: 'query: 8: 20: XQUERY_UNKNOWN_FUNCTION: {http://www.x-hive.com/2001/08/ xquery-functions} last-modified/1 (XPST0017: Это статическая ошибка, если расширенное QName и количество аргументов в вызове функции не соответствуют имени и значению сигнатуры функции в статическом контексте.) ' – bomdiddybombom

+0

@ user2083508 Вы уверены, что не выполняете пустую функцию? Можете ли вы изолировать один вызов «xhive: last-modified()»? – wst