[英]Selecting records younger then 2 minutes with DATEDIFF
我目前面臨以下問題:
我正在制作一個存儲過程來執行此任務。 看起來如下:
我的數據庫中有以下數據:
160 300833B2DDD9014035050005 18-7-2013 11:18:44
161 300833B2DDD9014035050005 18-7-2013 11:19:50
162 300833B2DDD9014035050005 18-7-2013 11:24:03
163 300833B2DDD9014035050005 18-7-2013 13:38:50
164 300833B2DDD9014035050005 18-7-2013 13:39:29
165 300833B2DDD9014035050005 1-1-1900 0:00:00
當我執行以下查詢(使用currentdate)時:
DECLARE @return_value Int
DECLARE @currDate DATETIME
SET @currDate = GETDATE()
EXEC @return_value = [dbo].[INSERT_LOCALROW]
@RFIDTagID = N'300833B2DDD9014035050005',
@ScannedTime = @currDate
SELECT 'Return Value' = @return_value
GO
該查詢返回以下結果:6行但是我希望得到0行作為返回,因為結果都不比當前時間差兩分鍾。
有人有什么建議嗎?
編輯
我已經找到答案了:
SELECT COUNT(*) FROM dbo.LocationUpdates updates WHERE updates.RFIDTagID = @RFIDTagID AND DATEDIFF(MINUTE, @ScannedTime, updates.ScannedTime) > -2
當您將較新的日期與較舊的日期進行比較時,DateDiff函數將提供負整數,因此,當數據庫中的時間比當前時間早兩分鍾時,它將返回-2。
我會取代
DATEDIFF(MINUTE, @ScannedTime, updates.ScannedTime) < 2
如果第二個參數大於第三個參數(日期),則結果為負。 而且...的負結果小於2。
通過
updates.ScannedTime > DATEADD(MINUTE, -2, @ScannedTime)
或反轉參數
DATEDIFF(MINUTE, updates.ScannedTime, @ScannedTime) < 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.