2

我只想返回在 SQL Server 中的当前日期之后的 XML 列中具有日期的行。我怎样才能做到这一点?

我在下面最后一行收到的错误是:XQuery [LB_Webinar.WebinarXML.exist()]: There is no function '{ http://www.w3.org/2004/07/xpath-functions }:GETDATE() '

(
   @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>
4

1 回答 1

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

于 2013-06-26T18:36:20.337 回答