2013-11-15 9 views
0

Я получаю XML в SQL Server, и мне нужно, чтобы получить businessDate значение,Как разобрать XML в TSQL

Я попробовал этот

Select C.value('(businessDate)[1]', 'DATETIME') AS 
FROM @input.nodes('/MealsUsed/*') AS T(C) 

XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<MealsUsed businessDate="10/09/2013" count="10" institutionID="Test"> 
<MealUsed> 
    <TransactionDate>02/05/2013 08:10:06</TransactionDate> 
    <LocationID>8</LocationID> 
    <Swipes>1</Swipes> 
</MealUsed> 
<MealUsed> 
+0

И что случилось, когда вы это сделали? – RBarryYoung

+0

Кроме того, можем ли мы предположить, что вы действительно имеете имя между 'AS' и' FROM'? Или это проблема? – RBarryYoung

ответ

1

businessDate является атрибут, а не элемент, поэтому вы должны использовать его с @:

select 
    C.value('@businessDate', 'datetime') as businessDate 
from @input.nodes('MealsUsed') as T(C) 

На самом деле, так как businessDate не в формате XML, дата, я бы лучше, чтобы получить его в VARCHAR, а затем преобразовать с appropriate format:

select 
    convert(datetime, C.value('@businessDate', 'varchar(10)'), 103) as businessDate 
from @input.nodes('MealsUsed') as T(C) 

sql fiddle demo