0

time(7)型をbigintT-SQLに変換するにはどうすればよいですか?

time(7)データを含む列のデータを更新して、型である別の列に変換しようとしていますbigint

4

2 に答える 2

2

「ティック」と言うときは、秒を意味すると仮定します。ミリ秒を意味する場合は、「ss」を「ms」に変更します。

Declare @time7 Time(7)
Set     @time7 = Convert(Time(7),Getdate())

Select  Convert(Bigint,Datediff(ss,0,@time7))
于 2013-03-21T14:36:00.160 に答える
1

datediffint を返すので、time(7) の完全な精度が必要な場合は、計算を行う必要があります。microsecondor nanosecondinを使用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:59datetime

datediffサポートさbigintれていれば、これらすべてがはるかに簡単になります。

于 2013-03-21T14:53:11.860 に答える