【问题标题】:Modifying an XML - SMALLDATETIME修改 XML - SMALLDATETIME
【发布时间】:2017-06-28 19:08:04
【问题描述】:

您好,我正在 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

输出是。末尾附加了额外的“.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'

我希望 XML 修改函数在没有 .000 的情况下返回相同的结果。

请提出建议。 提前致谢 饶

【问题讨论】:

  • StartDate 的数据类型是什么?
  • 现在是 SMALLDATETIME。我也会更新问题。
  • 默认返回<_x0023_temp startdate="2017-06-05T09:00:00">
  • 只有.00,我错过了什么吗?
  • 我的问题是 XML 修改函数在末尾添加了 .000。

标签: sql-server xml sql-server-2012 smalldatetime xml.modify


【解决方案1】:

您可以将值强制转换为 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 不变

【讨论】:

    猜你喜欢
    • 2013-07-02
    • 2020-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    • 1970-01-01
    • 2013-04-26
    相关资源
    最近更新 更多