Как сравнить дату в атрибуте xml на сервере sql - PullRequest
0 голосов
/ 06 мая 2020

У меня есть данные XML в столбце таблицы сервера SQL. Данные XML выглядят так:

<MainTag dateCreated="2/6/2020 9:22:48 AM">

</MainTag>

Я пишу запрос для извлечения данных из XML с последним dateCreated. Я пробовал использовать предложение order by, но поскольку дата хранится в виде строки, получается неправильный XML.

Запрос, который я пробовал:

SELECT TOP 1 tbl.Id,
c.value(''@dateCreated'',''VARCHAR(max)'') AS [dateCreated]
FROM tbl
CROSS APPLY tbl.Column.nodes(''/MainTag[1]'') AS t(c)
order by c.value(''@dateCreated'', ''VARCHAR(max)'') DESC;

Если два XML-файла похожи на:

<MainTag dateCreated="2/6/2020 9:22:48 AM"> and <MainTag dateCreated="5/3/2016 8:12:37 AM">

Тогда выбирается Xml, это

<MainTag dateCreated="5/3/2016 8:12:37 AM">

, но я хочу, чтобы было извлечено

<MainTag dateCreated="2/6/2020 9:22:48 AM">

.

Не знаю, как это сделать это.

1 Ответ

0 голосов
/ 06 мая 2020

Попробуйте заменить последнюю строку на:

order by convert(datetime, c.value('@dateCreated', 'VARCHAR(max)'), 103) desc;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...