【问题标题】:How to deserialize data records serialized with FOR XML AUTO in T-SQL?如何在 T-SQL 中反序列化使用 FOR XML AUTO 序列化的数据记录?
【发布时间】:2026-02-21 21:35:01
【问题描述】:

在我的 Microsoft SQL Server 2005 数据库中,WorkingDays 列中有数据,例如:

<WorkingDays>
  <Day>2011-05-05</Day>
  <Day>2011-05-06</Day>
</WorkingDays>

如何在 T-SQL 查询中将它们反序列化为DateTime 格式?

【问题讨论】:

    标签: sql sql-server xml tsql serialization


    【解决方案1】:

    试试这样的:

    DECLARE @TEST TABLE(ID INT IDENTITY, XmlContent XML)
    
    INSERT INTO @TEST(XmlContent) VALUES('<WorkingDays>
      <Day>2011-05-05</Day>
      <Day>2011-05-06</Day>
    </WorkingDays>')
    
    
    SELECT 
        ID,
        WD.DAYS.value('(.)[1]', 'datetime') AS 'Day'
    FROM 
        @TEST
    CROSS APPLY 
        XmlContent.nodes('/WorkingDays/Day') AS WD(Days)
    

    这给了我一个输出:

    ID    Day
    1     2011-05-05 00:00:00.000
    1     2011-05-06 00:00:00.000
    

    【讨论】: