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

datediff返回一个 int 所以如果你想要 time(7) 的完整精度,你需要做一些计算。使用microsecondor nanosecondindatediff会导致溢出。

declare @T time(7) = '23:59:58.9999999'
select datediff(second, '00:00', @T) * cast(10000000 as bigint) + right(@T, 7)

结果:

863989999999

重要的是使用00:00而不是0datediff. 随着0您的时间值将被隐式转换为datetime并且上面使用的值将被转换为该值23:59:59,因为datetime四舍五入为 0.000、0.003 或 0.007。

datediff如果支持bigint,这一切都会容易得多。

于 2013-03-21T14:53:11.860 回答