У меня есть консольное приложение, которое будет выбирать записи, основываясь на том, выбрал ли пользователь получать уведомления ежедневно в определенный час дня, а также на всех записях, где пользователь выбрал почасовые.
Работа будет выполняться каждые 15 минут.
Как найти порог времени между 5 минутами до и 5 минутами после начала часа?
Это мой код
Declare @Now datetime
Declare @NowHour int
Declare @NowMinute int
Declare @NewNow nvarchar(50)
Set @Now = {fn Now()}
Set @NowHour = (SELECT DATENAME(hh, @Now))
Set @NowMinute = (SELECT DATENAME(mi, @Now))
Set @NewNow = Cast(Cast(@NowHour As nvarchar(2)) + ':' + Cast(@NowMinute As nvarchar(2)) as Time)
Select @Now, @NowHour, @NowMinute, @NewNow
Select * From vw_consumerAlerts
Where casexid not in
(Select casexid from alerthistory)
And Name = 'Always'
Or ([Hour] Between DateAdd(minute, -5, @NewNow) And DateAdd(minute, -5, @NewNow))
Это ошибка, которую я получаю
The data types time and datetime are incompatible in the greater than or equal to operator.
Я понял, у меня поменялись [Hour] и @NewNow, теперь я получаю правильные результаты с:
(@NewNow Between DateAdd(minute, -5, [Hour]) And DateAdd(minute, 5, [Hour]))