Re: MSSQL Парсинг XML и прербразование дат
От: bnk СССР http://unmanagedvisio.com/
Дата: 02.04.23 11:48
Оценка: 76 (1)
Здравствуйте, .alex, Вы писали:

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


Код выше он выдал прямо по твоему вопросу.
Про "код 104" для преобразования даты из русского/немецкого я бы ни в жизнь не догадался.
Отредактировано 02.04.2023 11:51 bnk . Предыдущая версия . Еще …
Отредактировано 02.04.2023 11:50 bnk . Предыдущая версия .
Отредактировано 02.04.2023 11:49 bnk . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.