0

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
4

3 に答える 3

3
IF DATEPART(MINUTE, SYSDATETIME()) = 59
    PRINT '59th minute';
于 2013-04-19T20:16:17.040 に答える
1

分(@dt)=59 または 分(@dt)=0

于 2013-04-19T21:37:57.167 に答える