我想只返回SQL Server中当前日期之后XML列中有日期的行。我怎么能这样做?
我在下面最后一行收到的错误是: XQuery [LB_Webinar.WebinarXML.exist()]:没有函数“{http://www.w3.org/2004/07/xpath-functions}:GETDATE()' < / p>
(
@Site varchar(10)
)
AS
WITH XMLNAMESPACES ('http://www.testsite.com/ClientWebinar' as lbx)
SELECT * FROM LB_Webinar
WHERE
Site = @Site
AND
LB_Webinar.WebinarXML.exist('/lbx:CLIENT_WEBINAR/lbx:WEBINAR/lbx:WEBINARDATE > GETDATE()') = 1
XML代码:
<lbx:CLIENT_WEBINAR xmlns:lbx="http://www.testsite.com/ClientWebinar">
<lbx:WEBINAR>
<lbx:WEBINARDATE>6/18/2013 2:00:00 PM</lbx:WEBINARDATE>
</lbx:WEBINAR>
</lbx:CLIENT_WEBINAR>
答案 0 :(得分:1)
您可以将今天的datetime
值存储在变量中,并使用表达式中的sql:variable()
在比较中使用该变量。
DECLARE @Today DATETIME;
SET @Today = GETDATE();
WITH XMLNAMESPACES ('http://www.testsite.com/ClientWebinar' as lbx)
SELECT *
FROM LB_Webinar
WHERE LB_Webinar.WebinarXML.exist('/lbx:CLIENT_WEBINAR/lbx:WEBINAR/lbx:WEBINARDATE/text()[. > sql:variable("@Today")]') = 1;
注意:如果您将datetime
值更改为ISO8601 yyyy-mm-ddThh:mi:ss.mmm
,则上述代码有效。