[英]How do I get all records where date is 6 months greater than today's date, using Microsoft SQL Server 2008?
[英]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.