MSSQL 2012 で純粋な TSQL を使用して、現在の時刻がこの時間の 59 分と次の時間の最初の 1 分の間にあるかどうかを判断するスマートな方法は何ですか?
「今」から時間を切り捨てたくない、日付を切り捨てて時間計算だけをしたい。
これは私に一種の近道をもたらします:(日付の変換ではなく)間の時間のDatepartですが、テーブルの値ではなく現在の時間に基づいて計算する必要があるため、正確ではありません。
以下は、サーバーが現在「悪い時間」にあり、値「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"
ありがとう。
編集:
このコードは機能しますが、より効率的に実行できると確信しています。すべての推奨事項を歓迎します。再度、感謝します。
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