Datetime 如何从xpath中的日期中扣除一天?
我使用SOAPUI免费版本编写自动化测试。 我从sql数据库中获取的日期格式如下:Datetime 如何从xpath中的日期中扣除一天?,datetime,xpath,soapui,saxon,Datetime,Xpath,Soapui,Saxon,我使用SOAPUI免费版本编写自动化测试。 我从sql数据库中获取的日期格式如下: 2015-11-30 13:38:58.387 我需要将其转换为ormat格式,如: 2015-11-30T13:38:58.387 or 2015-11-30 从中减去一天,这样就可以得到减去一天的日期 我尝试使用previous-day()函数和substring-before()(使用XPath): 但它总是会出现如下错误: net.sf.saxon.trans.XPathException:XPath
2015-11-30 13:38:58.387
我需要将其转换为ormat格式,如:
2015-11-30T13:38:58.387 or 2015-11-30
从中减去一天,这样就可以得到减去一天的日期
我尝试使用previous-day()
函数和substring-before()
(使用XPath):
但它总是会出现如下错误:
net.sf.saxon.trans.XPathException:XPath syntax error at char 87 {../*:Row/*:VALIDFROM/text()..}: Unknown system function previous-day()
为什么这些功能不起作用
谢谢试试这个:
xs:dateTime(translate(//x, ' ', 'T')) - xs:dayTimeDuration('P1D')
其中//x
代表您的节点选择
Michael Kay在评论中指出了这一点。您使用XPath表明您没有正确处理XML名称空间。您也应该解决这个问题,这并不难。previous-day()函数不起作用的原因是它不存在。是什么让你这么想的?我从这个源代码中选择了xs:dateTime(translate(//x,,'T'))-xs:dayTimeDuration('P1D')几乎,这并不能解释T-SQL日期时间所具有的点。在xs:dateTime值中,分数秒是相当合法的。@MichaelKay谢谢你,你当然是对的。我冒昧地用你更简单的建议更新了我的答案。谢谢你的建议。我使用这个变量:
xs:date(前面的子字符串(//*:Results/*:ResultSet/*:Row/*:VALIDFROM'))-xs:dayTimeDuration('P1D')
这给了我:Sat Oct 03 02:00:00 CEST 2015
但我需要像这样的格式:2015-11-30T13:38:58.387
或2015-11-30
你知道这里可以使用什么函数吗?
xs:dateTime(translate(//x, ' ', 'T')) - xs:dayTimeDuration('P1D')