Как десериализовать записи данных, сериализованные с помощью FOR XML AUTO в T-SQL?

#sql #sql-server #xml #tsql #serialization

#sql #sql-сервер #xml #tsql #сериализация

Вопрос:

В моей базе данных Microsoft SQL Server 2005 у меня есть данные в столбце WorkingDays , подобные :

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

Как десериализовать их в запросе T-SQL для DateTime форматирования?

введите описание изображения здесь

Ответ №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