ある時間値を導出するために使用されているストアドプロシージャにifステートメントがあります。次のようになります。
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,-@DailyLimitOffsetTime, CONVERT(TIME,SYSUTCDATETIME()))
マイナス演算子のデータ型時間が無効であるというエラーが発生し続けます。and句を機能させるためにこれを回避するにはどうすればよいですか。データ型を変換しようとしましたが、DATEADD(hh)がパラメータ2を時間ではなく整数として探しているという問題をある程度理解しています。これを行う簡単な方法はありますか。タイムスタンプがまったく得意ではないことがまだわからない場合は、認める必要があります。どんな助けでも大歓迎です。
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,-@DailyLimitOffsetTime),CONVERT(TIME,SYSUTCDATETIME()))
)
SET @ErrorTypeID = 9400
これを行うにはもっと良い方法があると確信しています。もしそうなら、その方法を教えてください。いつものようにどんな助けもありがたいです。この問題についてさらに説明が必要な場合は、お知らせください。これは少し面倒です。