2

我想创建一个 xquery 函数,它以以下格式获取日期列表:MM/dd/yyyy HH:mm:ss 并返回最小值。我创建了以下内容,但仅当日期为 yyyy-MM-dd'T'HH:mm:ss 格式时才有效。

 let $dates := <Dates>
                    <date>2012-11-11T10:10:10</date>
                    <date>2012-11-11T10:10:10</date>
                    <date>2012-11-12T10:10:10</date>
                  </Dates>  
 let $DatesStructure := 
     for $date in $dates/date
     order by xs:dateTime($date/text()) descending          
     return <date> {$date/text()}  </date>
 return <Dates> { $DatesStructure } </Dates> 

我希望对以下格式的日期具有相同的功能 MM/dd/yyyy HH:mm:ss

4

1 回答 1

2

使用

let $dates := <Dates>
                    <date>11/11/2012 10:10:10</date>
                    <date>11/11/2012 10:10:10</date>
                    <date>11/12/2012 10:10:10</date>
                  </Dates>
 let $DatesStructure :=
     for $date in $dates/date
     order by
     xs:dateTime
        (let $parts := tokenize(substring-before($date, ' '), '/'),
             $y := $parts[3], $m := $parts[1], $d := $parts[2],
             $t := substring-after($date, ' ')
           return
             concat($y,'-',$m,'-',$d, 'T', $t)
         )
     descending
     return <date> {$date/text()}  </date>
 return <Dates> { $DatesStructure } </Dates>

此查询产生所需的正确结果

<Dates>
    <date>11/12/2012 10:10:10</date>
    <date>11/11/2012 10:10:10</date>
    <date>11/11/2012 10:10:10</date>
</Dates>
于 2012-10-18T21:56:56.947 回答