SQL查询:
SELECT
ROUND((CAST(DATEATTRIBUTE2 AS DATE) - CAST(DATEATTRIBUTE1 AS DATE)) * 86400) AS result
FROM TEST_TABLE;
DATEATTRIBUTE1
和DATEATTRIBUTE2
都属于TIMESTAMP
类型。
我尝试过并提出以下 XQuery :
fn:days-from-duration(fn:subtract-dateTimes-yielding-dayTimeDuration(
$P_REQUEST/ns1:DATEATTRIBUTE2,$P_REQUEST/ns1:DATEATTRIBUTE1))*86400
但是,如果日期相同但时间不同,则会失败。例如, DATEATTRIBUTE1
为2017-02-23T01:17:18.0000
且DATEATTRIBUTE2
为2017-02-23T01:17:20.7550
时,SQL查询返回2,而XQuery返回0。
提前感谢您的帮助!
答案 0 :(得分:1)
如果我正确理解,您需要两个dateTime
之间的总秒数。你可以这样做:
floor(
($P_REQUEST/ns1:DATEATTRIBUTE2 - $P_REQUEST/ns1:DATEATTRIBUTE1)
div xs:dayTimeDuration('PT1S')
)
即减去它们 - 您可以使用-
运算符 - 然后将获得的持续时间除以1的持续时间,然后向下舍入。
对于问题中给出的示例,它产生2。
为了进一步参考,有一个functx函数记录here以这种方式建议。