Search code examples
xquerydurationosb

Duration in time is giving in OSB xquery 3 hour but i need Duration 03 hour


The below XQuery code returns:

Duration=3 hour

but I expect:

Duration=03 hour

What am I doing wrong?

{
    let $hour := hours-from-duration(op:subtract-times(xs:time(fn:substring-after('2015-07-31T10:25:00','T')),xs:time(fn:substring-after('2015-07-31T07:15:00','T'))))            
    return
    <FlightDuration> {($hour)}</FlightDuration>
}

Solution

  • Based on your example, I am guessing that you are using OSB 11 or some earlier version. You could try using fn-bea:format-number. Also, I would avoid using anything under op:* directly.

    let $dt1 := xs:dateTime('2015-07-31T10:25:00')
    let $dt2 := xs:dateTime('2015-07-31T07:15:00')
    let $t1 := xs:time($dt1)
    let $t2 := xs:time($dt2)
    let $diff := $t1 - $t2
    let $hour := hours-from-duration($diff)
    return
       <FlightDuration>{fn-bea:format-number($hour, "00")}</FlightDuration>
    

    Evaluates to:

    <FlightDuration>03</FlightDuration>