xquery sort datetime MM / dd / yyyy HH:mm:ss

时间:2012-10-18 21:04:28

标签: sorting datetime format xquery

我想创建一个xquery函数,它以下列格式获取日期列表:MM / dd / yyyy HH:mm:ss并返回min。 我创建了以下内容但它仅在日期为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

1 个答案:

答案 0 :(得分: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>