Сообщение Re: MSSQL Парсинг XML и прербразование дат от 02.04.2023 11:48
Изменено 02.04.2023 11:49 bnk
Re: MSSQL Парсинг XML и прербразование дат
Здравствуйте, .alex, Вы писали:
A>Добрый день. Разбираю xml sql сервером. В xml есть список нодов с датам и значениями. Мне нужно выбрать ноду с максимальной датой.
A>Даты в русском/немецком формате!!!
ChatGPT же
Я теперь стал теперь в первую очередь ему вопросы задавать такие вместо гугла, он подобную хрень хорошо тащит, ну или по крайней мере идею решения дает, если не готовое решение
A>Добрый день. Разбираю xml sql сервером. В xml есть список нодов с датам и значениями. Мне нужно выбрать ноду с максимальной датой.
A>Даты в русском/немецком формате!!!
ChatGPT же
Я теперь стал теперь в первую очередь ему вопросы задавать такие вместо гугла, он подобную хрень хорошо тащит, ну или по крайней мере идею решения дает, если не готовое решение
DECLARE @xml XML = N'<root>
<sub_root>
<node>
<val>1</val>
<date>31.07.2022</date>
</node>
<node>
<val>2</val>
<date>20.08.2022</date>
</node>
</sub_root>
</root>';
WITH cte AS (
SELECT
n.value('(val/text())[1]', 'int') AS val,
CONVERT(date, n.value('(date/text())[1]', 'varchar(10)'), 104) AS date
FROM @xml.nodes('/root/sub_root/node') AS t(n)
)
SELECT val, date
FROM cte
WHERE date = (SELECT MAX(date) FROM cte)Здесь мы используем переменную @xml, которая хранит ваш XML-документ.
Затем мы используем общий табличный выражение (CTE) для извлечения значений из XML-документа,
преобразуя дату из русского/немецкого формата (день.месяц.год) с использованием кода 104.
Наконец, мы выбираем ноду с максимальной датой из CTE
Re: MSSQL Парсинг XML и прербразование дат
Здравствуйте, .alex, Вы писали:
A>Добрый день. Разбираю xml sql сервером. В xml есть список нодов с датам и значениями. Мне нужно выбрать ноду с максимальной датой.
A>Даты в русском/немецком формате!!!
ChatGPT же
Я теперь стал теперь в первую очередь ему вопросы задавать такие вместо гугла, он подобную хрень хорошо тащит, ну или по крайней мере идею решения дает, если не готовое решение
A>Добрый день. Разбираю xml sql сервером. В xml есть список нодов с датам и значениями. Мне нужно выбрать ноду с максимальной датой.
A>Даты в русском/немецком формате!!!
ChatGPT же
Я теперь стал теперь в первую очередь ему вопросы задавать такие вместо гугла, он подобную хрень хорошо тащит, ну или по крайней мере идею решения дает, если не готовое решение
DECLARE @xml XML = N'<root>
<sub_root>
<node>
<val>1</val>
<date>31.07.2022</date>
</node>
<node>
<val>2</val>
<date>20.08.2022</date>
</node>
</sub_root>
</root>';
WITH cte AS (
SELECT
n.value('(val/text())[1]', 'int') AS val,
CONVERT(date, n.value('(date/text())[1]', 'varchar(10)'), 104) AS date
FROM @xml.nodes('/root/sub_root/node') AS t(n)
)
SELECT val, date
FROM cte
WHERE date = (SELECT MAX(date) FROM cte)Здесь мы используем переменную @xml, которая хранит ваш XML-документ.
Затем мы используем CTE для извлечения значений из XML-документа,
преобразуя дату из русского/немецкого формата (день.месяц.год) с использованием кода 104.
Наконец, мы выбираем ноду с максимальной датой из CTE