我在$ doc变量中使用了以下XML
let $doc := <root>
<date>12/31/2016</date>
</root>
Run Code Online (Sandbox Code Playgroud)
我想把这个日期与今天的日期进行比较.它应该归还给我,但它却让我失意.
我使用以下代码 -
let $doc := <root>
<date>12/31/2016</date>
</root>
let $date := $doc/date/text()
let $today :=fn:format-date(fn:current-date(),"[M01]/[D01]/[Y0001]")
return $date le $today
Run Code Online (Sandbox Code Playgroud)
有什么建议 ?
小智 5
您需要将日期字符串转换为xs:date,以便能够以这种方式比较它们.使用格式化fn:format-date()只生成一个字符串,同时fn:current-date()返回一个xs:date.此代码段可以实现您想要的功能,但您可能还需要考虑以xs:date格式在文档中保存数据,即<date>2016-12-31</date>.
let $doc :=
<root>
<date>12/31/2016</date>
</root>
let $date-string := $doc/date/text()
let $date-parts := fn:tokenize($date-string,"/")
(: rearrange date parts into yyyy-mm-dd string and cast as xs:date :)
let $date := xs:date(fn:concat($date-parts[3],"-",$date-parts[1],"-",$date-parts[2]))
let $today := fn:current-date()
return $date le $today
=> false
Run Code Online (Sandbox Code Playgroud)
如果日期以xs:date格式保留,则可以简化为:
let $doc :=
<root>
<date>2016-12-31</date>
</root>
return xs:date($doc/date/text()) le fn:current-date()
Run Code Online (Sandbox Code Playgroud)
然后,您还可以使用日期元素上的范围索引cts:element-range-query()来选择符合所需条件的文档,等等.以这种方式保留日期.
| 归档时间: |
|
| 查看次数: |
417 次 |
| 最近记录: |