2013-11-15 78 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