time(7)
型をbigint
T-SQLに変換するにはどうすればよいですか?
time(7)
データを含む列のデータを更新して、型である別の列に変換しようとしていますbigint
。
time(7)
型をbigint
T-SQLに変換するにはどうすればよいですか?
time(7)
データを含む列のデータを更新して、型である別の列に変換しようとしていますbigint
。
「ティック」と言うときは、秒を意味すると仮定します。ミリ秒を意味する場合は、「ss」を「ms」に変更します。
Declare @time7 Time(7)
Set @time7 = Convert(Time(7),Getdate())
Select Convert(Bigint,Datediff(ss,0,@time7))
datediff
int を返すので、time(7) の完全な精度が必要な場合は、計算を行う必要があります。microsecond
or nanosecond
inを使用datediff
すると、オーバーフローが発生する可能性があります。
declare @T time(7) = '23:59:58.9999999'
select datediff(second, '00:00', @T) * cast(10000000 as bigint) + right(@T, 7)
結果:
863989999999
00:00
の代わりに0
使用することが重要datediff
です。.000、 .003 、または .007 に丸められるため、0
時間値は暗黙的に変換されdatetime
、上記で使用された値は値に変換されます。23:59:59
datetime
datediff
サポートさbigint
れていれば、これらすべてがはるかに簡単になります。