【发布时间】:2015-12-22 13:24:19
【问题描述】:
我有以下 XML sn-p:
<Plan>
<CurrentTransaction StartDate="2016-01-01" EndDate="2016-01-31">
</CurrentTransaction>
<Transaction StartDate="2015-10-01" EndDate="2015-10-31">
</Transaction>
<Transaction StartDate="2015-11-01" EndDate="2015-11-30">
</Transaction>
<Transaction StartDate="2015-12-01" EndDate="2015-12-31">
</Transaction>
</Plan
我正在尝试根据日期进行查询,所以我使用以下 SQL:
DECLARE @StartDate AS Datetime = '2015-10-01'
DECLARE @EndDate AS Datetime = '2015-10-31'
SELECT [Tran].T.value('(@StartDate)[1]','datetime') AS TranStart,
FROM [dbo].MyTable mt
CROSS APPLY pp.MyXMl.nodes('(Plan/Transaction , Plan/CurrentTransaction)') AS [Tran](T)
WHERE [Tran].T.value( '(@StartDate)[1]','datetime2')
BETWEEN ISNULL(@StartDate, [Tran].T.value( '(@StartDate)[1]','datetime2'))
AND ISNULL(@EndDate,[Tran].T.value( '(@StartDate)[1]','datetime2'))
所以理论上,上面应该带回一个记录,即 10 月份的记录,但它没有,它带回了所有记录。
我尝试过投射日期以及使用 DateTime2,但没有任何效果。
谁能帮忙?
注意:
只是将查询中的where子句改为:
[Tran].T.value( '(@StartDate)[1]','datetime') BETWEEN @StartDate AND @EndDate
我还是一样。
【问题讨论】:
标签: sql sql-server xml xquery-sql