我在存儲過程中有一條if語句,用於派生一些時間值。它看起來像這樣:在sql中使用時間戳
DECLARE @foo TIME
IF (SELECT CONVERT(TIME,SYSUTCDATETIME())) > '15:00'
SET @foo = DATEADD(hh,-15,CONVERT(TIME,SYSUTCDATETIME()))
ELSE
SET @foo = DATEADD(hh,+9,CONVERT(TIME,SYSUTCDATETIME()))
後來我想使用該值以下WHERE子句中:
AND created_at > DATEADD(hh,[email protected], CONVERT(TIME,SYSUTCDATETIME()))
我不斷收到錯誤的數據類型,時間是負無效運營商。我怎樣才能解決這個問題,使和子句工作。我已經嘗試轉換數據類型,我有點理解問題DATEADD(hh)正在尋找參數2是一個int不是一次。有沒有一些更簡單的方法來做到這一點,我必須承認,如果你不能告訴我,我的時間戳根本不好。任何幫助表示讚賞。
DECLARE @DailyLimitOffsetTime TIME
IF (SELECT CONVERT(TIME,SYSUTCDATETIME())) > '15:00'
SET @DailyLimitOffsetTime = DATEADD(hh,-15,CONVERT(TIME,SYSUTCDATETIME()))
ELSE
SET @DailyLimitOffsetTime = DATEADD(hh,+9,CONVERT(TIME,SYSUTCDATETIME()))
IF @Limit <=
(
SELECT COUNT(*)
FROM dbo.fooTable
WHERE offerId = @OfferID
AND created_at >
DATEADD(hh,DATEPART(hh,[email protected]),CONVERT(TIME,SYSUTCDATETIME()))
)
SET @ErrorTypeID = 9400
我肯定有一個更好的方法來做到這一點,如果是的話,請分享如何。一如既往的讚賞。如果您需要關於此問題的進一步解釋,請告訴我。這個有點亂。
這仍然會失敗並出現相同的錯誤。 消息8117,級別16,狀態1,過程CreateTransaction,行160操作數數據類型時間對於負運算符無效。 – SSISPissesMeOff
即使添加convert(int,@ DailyLimitOffsetTime)也不起作用,但出現以下錯誤:Msg 529,Level 16,State 2,Line 6 不允許將數據類型int顯式轉換爲時間。 – SSISPissesMeOff
@SSISPissesMeOff立即嘗試。 –