如何从TIME值获取总毫秒数

Cha*_*ion 1 sql-server time

本质上,我想要相当于.NET TimeSpan.TotalMilliseconds,但是对于SQLServer中的TIME数据类型.我能想到的最好的是:

DATEDIFF(ms, CONVERT(DATE, CONVERT(DATETIME2, value)), CONVERT(DATETIME2, value))
Run Code Online (Sandbox Code Playgroud)

然而,这是非常冗长且非常明显的.是否有更简洁/内置的方法来做到这一点?

Siy*_*ual 8

除非我在你的问题中遗漏了什么,否则你根本不需要做任何CONVERT事情.该DATEDIFF()函数支持TIME数据类型:

Declare @T1 Time = '01:00:00',
        @T2 Time = '01:00:01'

Select  DateDiff(Millisecond, @T1, @T2)
Run Code Online (Sandbox Code Playgroud)

1000

Declare @T1 Time = '01:00:00.000',
        @T2 Time = '01:00:00.123'

Select  DateDiff(Millisecond, @T1, @T2)
Run Code Online (Sandbox Code Playgroud)

123