SQL:选定的日期超出范围

问题描述:

我有一个查询,它返回行创建时的最新日期。日期为“2010-02-03”SQL:选定的日期超出范围

SELECT * FROM 
[LinkedServer].[Server].[Table] 
WHERE [TimeStamp]= (SELECT MAX(TimeStamp) 
FROM [LinkedServer].[Server].[Table] 
WHERE UserName IN 
(SELECT Tagname COLLATE DATABASE_DEFAULT FROM LocalServer.MyDatabase.dbo."Taglist" 
WHERE LOCATION = 'Europe' AND COUNTRY = 'England')) 

此查询工作正常,但是我想插入一个IF ELSE语句,所以如果我选择不同的日期,比MAX(时间戳)更大然后返回一个错误信息。我尝试的方式如下:

IF MAX(TimeStamp) > '2011-02-15' 
BEGIN 

SELECT * FROM 
[LinkedServer].[Server].[Table] 
WHERE [TimeStamp]= (SELECT MAX(TimeStamp) 
FROM [LinkedServer].[Server].[Table] 
WHERE UserName IN 
(SELECT Tagname COLLATE DATABASE_DEFAULT FROM LocalServer.MyDatabase.dbo."Taglist" 
WHERE LOCATION = 'Europe' AND COUNTRY = 'England')) 

END 
ELSE 
PRINT 'Date out of range' 

不幸的是,这种方式查询不起作用。关于我应该在哪里更改代码的任何建议? 谢谢!

Declare @MaxTS datetime 

SELECT @MaxTS=MAX(TimeStamp) 
FROM [LinkedServer].[Server].[Table] 
WHERE UserName IN 
(SELECT Tagname COLLATE DATABASE_DEFAULT FROM LocalServer.MyDatabase.dbo."Taglist" 
WHERE LOCATION = 'Europe' AND COUNTRY = 'England') 

IF @MaxTS > '20110215' 
BEGIN 

SELECT * FROM 
[LinkedServer].[Server].[Table] 
WHERE [TimeStamp]= @MaxTS 

END 
ELSE 
PRINT 'Date out of range' 
+0

谢谢你的快速回答。我正在执行查询。只要它返回一些内容,我会让你知道。 – Farkiba 2013-03-01 09:24:02