2012-02-06 6 views
3

試行1(@start)から始まる時間制限(@window)内で、2回目の試行(パスワード試行、ダウンロード試行などは想像できる)を確認しようとしています。なぜ他の日時の比較は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が構文エラーについて不平を言った理由を説明してください。 「DATETIME <[>、<=,> =]もう一つのDATETIMEが動作します。 – Deeptechtons

+0

SQLは「普通の」プログラミング言語や論理演算子と同じくらい汎用性がありません(<,>、<=,> =、=)明示的な形式では、フィルタリングにのみ使用できます(WHERE句内)。そのような場合は、SELECT文でCASE演算子を使用する必要があることを覚えておく必要があります –

0
select CAST((CASE 
       WHEN DATEADD(MINUTE,@window,@start) <= @start 
       THEN 1 
       ELSE 0 
     END) AS BIT) 
関連する問題