Каков умный способ определить, находится ли текущее время между 59-й минутой этого часа и первой минутой следующего часа, используя чистый TSQL на MSSQL 2012?Проверка времени на SQL Server 2012?
Я не хочу отрезать время от «сейчас», я хочу отрезать дату и просто сделать расчет времени.
Это дает мне вид закрытия: Datepart for time between (instead of Convert date), но не совсем так, поскольку мне нужно рассчитать на основе текущего времени, а не значений таблицы.
Следующая может помочь проиллюстрировать, если сервер находится в настоящее время в «плохое время» и должен возвращать значение «1»
14:58:59 , Should not be considered in the "bad time"
14:59:00 , Should be considered in the "bad time"
14:59:04 , Should be considered in the "bad time"
14:59:57 , Should be considered in the "bad time"
15:00:02 , Should be considered in the "bad time"
15:01:26 , Should not be considered in the "bad time"
15:02:00 , Should not be considered in the "bad time"
15:02:01 , Should not be considered in the "bad time"
Спасибо.
EDIT:
Этот код работает, но я уверен, что это может быть сделано более эффективно. Все рекомендации приветствуются. Еще раз спасибо.
declare @now time = (select cast(sysutcdatetime() as time ))
declare @floor time = (select dateadd(minute , 59 , (dateadd(hour,datediff(hour,0,@now),0))))
declare @ceiling time =( select dateadd(minute , 2 , @floor))
if (@now > @floor and @now < @ceiling)
begin
select 1 as bit
end
select @now , @floor , @ceiling
Можете ли вы уточнить, что вы подразумеваете под " между 59-й минутой ... и первой минутой "? Возможно, вы могли бы привести несколько примеров, таких как '14:58:59, 14:59:00, 14:59:04, 14:59:57, 15:00:02, 15:01:26, 15:02:00 , 15: 02: 01', и укажите, какие из них должны быть включены? В настоящее время описание неоднозначно, так как «BETWEEN» может включать или не включать в себя включительно на каждом конце диапазона, и будет ли конечный диапазон 00:01, 00:01:59 или что-то еще. –