您好我正在使用SQL服务器中的XML并尝试在SMALLDATETIME变量上使用修改函数,但它没有给我想要的结果。
DECLARE @Shift_StartDate SMALLDATETIME = '2017-06-05 09:00:00';
DECLARE @Shift_EndDate SMALLDATETIME = '2017-06-05 09:30:00';
DECLARE @x XML = '<dbo.tblXXXX StartDate="" EndDate="" />'
SET @x.modify('replace value of (/*[1]/@StartDate) with sql:variable("@Shift_StartDate")')
SET @x.modify('replace value of (/*[1]/@EndDate) with sql:variable("@Shift_EndDate")')
SELECT @X
输出是。还有额外的&#39;&#39;附在最后。我该怎样摆脱它们。
<dbo.tblXXXX StartDate="2017-06-05T09:00:00.000" EndDate="2017-06-05T09:30:00.000" />
我希望上面的输出如下所示,因为这是我运行以下查询时返回的内容
<dbo.tblXXXX StartDate="2017-06-05T09:00:00" EndDate="2017-06-05T09:30:00" />
DECLARE @ActualXml XML;
SET @ActualXml = (SELECT
[StartDate],
[EndDate]
FROM [dbo].[tblXXXX]
WHERE UniqueId = 8124X
FOR XML AUTO)
SELECT @ActualXml
[StartDate]和[EndDate]的数据类型是&#39; SMALLDATETIME&#39;
我希望XML修改函数在没有.000的情况下返回相同的结果。
请建议。 提前致谢 饶
答案 0 :(得分:0)
您可以将值转换为xs:string
并使用XQuery&#39; s substring
来剪切字符串:
DECLARE @Shift_StartDate SMALLDATETIME = '2017-06-05 09:00:00';
DECLARE @Shift_EndDate SMALLDATETIME = '2017-06-05 09:30:00';
DECLARE @x XML = '<dbo.tblXXXX StartDate="" EndDate="" />'
SET @x.modify('replace value of (/*[1]/@StartDate) with substring(xs:string(sql:variable("@Shift_StartDate")),1,19)')
SET @x.modify('replace value of (/*[1]/@EndDate) with sql:variable("@Shift_EndDate")')
SELECT @X
结果
<dbo.tblXXXX StartDate="2017-05-06T09:00:00" EndDate="2017-05-06T09:30:00.000" />
StartDate
没有.000
,而EndDate
没有变化