您好,我正在SQL server中使用XML,并试图对SMALLDATETIME变量使用modify函数,但它没有给出我想要的结果。
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输出为。末尾还有附加的'.000‘。我怎么才能摆脱他们。
<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 @ActualXmlStartDate和EndDate的DataType是'SMALLDATETIME‘
我希望XML modify函数在不使用.000的情况下返回相同的结果。
请提个建议。先谢谢你,拉奥
发布于 2017-06-29 15:37:34
您可以将值强制转换为xs:string,并使用XQuery的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没有变化
https://stackoverflow.com/questions/44810679
复制相似问题