Sql server 修改XML-SMALLDATETIME
您好,我正在SQL server中使用XML,并尝试对SMALLDATETIME变量使用modify函数,但它没有给我期望的结果Sql server 修改XML-SMALLDATETIME,sql-server,xml,sql-server-2012,smalldatetime,xml.modify,Sql Server,Xml,Sql Server 2012,Smalldatetime,Xml.modify,您好,我正在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=
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 @ActualXml
[StartDate]和[EndDate]的数据类型为“SMALLDATETIME”
我希望XMLModify函数返回不带.000的相同结果
请建议。
提前谢谢
Rao您可以将该值强制转换为xs:string,并使用XQuery的子字符串切断该字符串:
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没有变化StartDate的数据类型是什么?它是SMALLDATETIME。我也会更新这个问题。默认情况下,它是returningwhich,仅为.00,我是否遗漏了什么?我的问题是XML修改函数,它在末尾添加了.000。