0
我有以下代碼:動態日期xquery-過濾
<Table><ColumnHeaders>
<ColumnHeader name='Title' type='xs:string' />
<ColumnHeader name='EventDate' type='xs:date' />
<ColumnHeader name='today' type='xs:date' />
<ColumnHeader name='day-week' type='xs:integer' />
<ColumnHeader name='dur-end' type='xs:integer' />
<ColumnHeader name='start-date' type='xs:date' />
<ColumnHeader name='end-date' type='xs:date' />
</ColumnHeaders>
<Data>{let $today := fn:current-date()
let $day-week := functx:day-of-week($today)
let $dur-end := 6-$day-week
let $start-date := xs:date($today)-(xs:dayTimeDuration('P1D')*$day-week)
let $end-date := xs:date($today)+(xs:dayTimeDuration('P1D')*$dur-end)
for $ancestor0 in $queryresponse//*:row
where ($ancestor0/@ows_EventDate)>=$start-date
return<Row>
<Title>{fn:data($ancestor0/@ows_Title)}</Title>
<EventDate>{fn:data($ancestor0/@ows_EventDate)}</EventDate>
<today>{fn:data($today)}</today>
<day-week>{fn:data($day-week)}</day-week>
<dur-end>{fn:data($dur-end)}</dur-end>
<start-date>{fn:data($start-date)}</start-date>
<end-date>{fn:data($end-date)}</end-date>
</Row>}
</Data></Table>
中加入了「聲明」 where子句之後,XQuery的失敗,出現以下錯誤:
ZorbaDynamicException失敗。 Zorba引擎遇到動態錯誤。 錯誤類型:XQuery引擎錯誤。通過的項目(類型UNTYPED_ATOMIC)不能轉換爲傳遞目標類型(xs:date)。
有人能幫我解決這個問題嗎?
我已經在[您的原始問題的答案]中描述過(http://stackoverflow.com/questions/17738471/xquery-to-get-the-date-values-in-current-week):日期您所擁有的代表與XQuery日期不兼容,因此您必須將其轉換。 –
嗨, 我是Xquery的新手,實際上我不明白你對我原來的帖子的回答,我感到不自在地要求你詳細解釋它。這就是爲什麼我嘗試了我自己的邏輯,但不幸的是它並沒有起作用。如果你有一些時間,你可以請嘗試解釋一下細節? 此外,如果有任何xquery書,你會建議初學者,這將是偉大的。 Regards, – Jude
哪部分你不明白?我承認,如果您不習慣使用聲明性語言,那麼學習XQuery一開始並不容易。我不能幫你提供一本書的建議,我在一次大學講座中學到了它。目前的問題是你的日期格式不是標準的ISO日期格式,因此需要對齊,我在我的答案中使用正則表達式解決了這個問題。 –