2012-02-06 38 views
3

我試圖從第一次嘗試(@start)開始,在第二次嘗試(您可以設想密碼嘗試,下載嘗試等任何事情)在時間限制(@window)內進行檢查。爲什麼這個報告做了語法錯誤,當其他日期時間的比較關係運算符DATEADD - 我如何進行比較

declare @start datetime 
declare @window INT 
select @start = GETDATE(),@window = 10 

select CAST((DATEADD(MINUTE,@window,@start) <= @start) as BIT) 

預計產量爲像0工作,但我得到Incorrect syntax near '<'.

回答

4

試試這個:

SELECT CASE WHEN DATEADD(MINUTE,@window,@start) <= @start THEN 1 ELSE 0 END 
+0

你能解釋爲什麼Sql Serevr Management Studio抱怨語法錯誤。當像'選擇等等等等,從foo其中DATETIME <[>,<=,> =另一個DATETIME'工作 – Deeptechtons 2012-02-06 06:17:23

+0

我想這是因爲SQL是不是通用的一個「正常」的編程語言,等等邏輯運算符(<,>,<=,> =,=)以顯式形式只能用於過濾(在WHERE子句中)。你只需要記住在這種情況下在SELECT語句中你需要使用一個CASE操作符 – 2012-02-06 07:45:17

0
select CAST((CASE 
       WHEN DATEADD(MINUTE,@window,@start) <= @start 
       THEN 1 
       ELSE 0 
     END) AS BIT)