需要从current-date()xquery中删除时区

Ami*_*703 1 xquery

我是xquery的新手,其中一个要求是通过查询xDB生成每日报告.

如果我硬编码日期,我可以从xDB生成报告,但如果我尝试从系统中读取当前日期,我在报告中没有得到任何值.

代码片段:

let $day := fn:current-date()
let $hours := ( '00', '01', '02', '03', '04', 
        '05', '06', '07', '08', '09', 
        '10', '11', '12', '13', '14', 
        '15', '16', '17', '18', '19', 
        '20', '21', '22', '23' )

let $ddhh := for $i in $hours return concat($day,"T",$i)
let $title := concat("Average Time By Documents in Hour on ", $day)
Run Code Online (Sandbox Code Playgroud)

在报告中:(" 2015-06-08Z小时文件平均时间"..)

硬编码值和current-date()函数之间的差异是时区"Z".如何摆脱时区"Z".我只想在变量$ day中说"2015-06-08"而不是"2015-06-08Z"

提前致谢.

Flo*_*ges 5

如果要删除日期的时区组件,可以使用fn:adjust-date-to-timezone()空序列作为第二个参数:

fn:adjust-date-to-timezone($day, ())
Run Code Online (Sandbox Code Playgroud)


Jen*_*rat 5

将dateTime对象转换为字符串时,将选择默认的ISO日期格式,始终包括时区.手动转换,而不是使用日期fn:format-dateTime($dateTime, $picture)日期图片字符串$picture.

format-date(current-date(), "[Y0001]-[M01]-[D01]")
Run Code Online (Sandbox Code Playgroud)

您还可以按所需格式添加小时数:

format-dateTime(current-dateTime(), "[Y0001]-[M01]-[D01]-[H01]")
Run Code Online (Sandbox Code Playgroud)

这甚至可以让你省略你预生成的小时序列(当然也可以在单行中工作,拆分以便更容易解释):

let $today := current-date()                      (: today :)
let $today := xs:dateTime($today)                 (: convert to dateTime :)
let $hour := $today + xs:dayTimeDuration("PT3H")  (: add 3 hours :)
return format-dateTime($hour, "[Y0001]-[M01]-[D01]-[H01]")
Run Code Online (Sandbox Code Playgroud)