XQuery:将日期时间与毫秒进行比较
Posted
技术标签:
【中文标题】XQuery:将日期时间与毫秒进行比较【英文标题】:XQuery: comparing datetimes with milliseconds 【发布时间】:2015-01-28 20:37:30 【问题描述】:我在 Python 中有一个验证模块,它在 XML 文档上执行 XQuery,以检查是否有任何 <Start>
时间出现在 <End>
时间之后,并返回它们的计数。查询如下:
for $d at $count in ./ty:Detections/Detection
where $d/Start > $d/End
return $count
现在这适用于所有情况,除非将毫秒附加到结束时间但不是开始时间,例如:
<Start>2009-02-23T02:53:14Z</Start>
<End>2009-02-23T02:53:14.226Z</End>
这总是返回 True,即使显然 14 小于 14.22。
如果我在这里为<Start>
时间添加一个小数位,它可以工作——但是有没有更好的解决方案?
【问题讨论】:
【参考方案1】:推测Start
和End
元素没有有效的模式绑定。在这种情况下,查询正在执行 xs:untypedAtomic 比较,它有效地比较字符串值,其中"Z"
比较大于"."
。
您需要的是 xs:dateTime 比较,因此您应该在将元素值转换为该类型后比较它们。因此,查询应如下所示:
for $d at $count in ./ty:Detections/Detection
where xs:dateTime($d/Start) > xs:dateTime($d/End)
return $count
【讨论】:
Gunther == 绅士 + 学者,先生,这就解决了!但是,我改成xs:dateTime
大写T :)
谢谢。没错,xs:dateTime
中有一个大写的T
;-)以上是关于XQuery:将日期时间与毫秒进行比较的主要内容,如果未能解决你的问题,请参考以下文章