这看起来很基本,但我找不到适合我的例子,所以我很感激任何建议。
我有一个SQL Server函数,它根据我们的会计年度和今天的日期确定各种日期,并返回一行看起来像......
<row LastDayPrevMonth="2015-04-30T00:00:00" LastDayPrevMonthLY="2014-04-30T00:00:00" ... />
在调用该函数的存储过程中,我已经完成了......
DECLARE @X XML
SET @X = dbo.GetFiscalYearDates()
...但是我似乎无法提取LastDayPrevMonth的值。
我尝试过几十种变体:
SELECT ROW.ITEM.VALUE('LastDayPrevMonth', 'VARCHAR(30)')[1] AS Foo FROM @x.nodes('row/item')
...有时在最后有一个“AS Bar”......
该特定语法将错误“错误的语法附近的语法'作为'”,但任何调整我都没有帮助。
感谢您的帮助,伙计!
答案 0 :(得分:2)
declare @doc xml
select @doc= '
<root>
<row LastDayPrevMonth="2015-04-30T00:00:00" LastDayPrevMonthLY="2014-04-30T00:00:00" />
</root>
'
SELECT
LastDayPrevMonth = Y.i.value('(@LastDayPrevMonth)[1]', 'datetime')
, LastDayPrevMonthLY = Y.i.value('@LastDayPrevMonthLY[1]', 'datetime')
FROM
@doc.nodes('root/row') AS Y(i)