Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Datetime 如何从xpath中的日期中扣除一天?_Datetime_Xpath_Soapui_Saxon - Fatal编程技术网

Datetime 如何从xpath中的日期中扣除一天?

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

我使用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 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')