将time(7)转换为bigint T-SQL

时间:2013-03-21 14:24:18

标签: sql-server tsql

如何在T-SQL中将time(7)类型转换为bigint

我正在尝试将包含time(7)数据的列的数据更新并转换为另一个bigint类型的列。

2 个答案:

答案 0 :(得分:2)

假设你说“滴答”是指秒。如果你的意思是毫秒,将“ss”改为“ms”。

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

Select  Convert(Bigint,Datediff(ss,0,@time7))

答案 1 :(得分:1)

datediff返回一个int,所以如果你想要一个时间的完整精度(7),你需要做一些计算。使用microsecond中的nanoseconddatediff可能会导致溢出。

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非常重要。使用0时,您的时间值将隐式转换为datetime,上面使用的值将转换为值23:59:59,因为datetime舍入为.000,.003 ,或.007。

如果datediff supported bigint

,这一切都会容易得多