繁体   English   中英

如何仅从SQL Server的XML列中检索日期大于今天的日期的行?

[英]How can I only retrieve rows with dates greater than today's date from an XML column in SQL Server?

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

我收到的以下最后一行错误是: XQuery [LB_Webinar.WebinarXML.exist()]:没有函数'{ 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>

您可以将今天的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则上述代码有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM