tsql DATEDIFF会在几分钟内调用而不会缩短秒数

Chr*_*ian 2 t-sql datetime datediff sql-server-2008

我在SQL Server 2008中进行DATEDIFF()调用,作为存储过程的一部分,它可能返回小至3秒或更短的值.我希望格式为MM:SS(即3秒时00:03).我最初在几分钟内使用了这个电话:

DATEDIFF(mi, SELECT MAX(startDate) FROM myTable , SELECT MAX(EndDate) FROM myTable)

但是,这会向下舍入到最近的分钟,从而消除秒值.如何使用DATEDIFF实现上面指定的格式?

Mit*_*eat 10

到最近的第二个:

DATEDIFF(ss, SELECT MAX(startDate) FROM myTable, SELECT MAX(EndDate) FROM myTable)
Run Code Online (Sandbox Code Playgroud)

参考.

注意:DATEDIFF不会给你'格式'.它只返回一个整数.所以你需要适当地进行转换/格式化.

我怀疑你最容易得到的是使用CAST格式108:

select convert(char(8), dateadd(ss, DATEDIFF(ss, SELECT MAX(startDate) FROM myTable, 
                                                 SELECT MAX(EndDate) FROM myTable)), 
               cast(0 as DateTime)) , 108)
Run Code Online (Sandbox Code Playgroud)

例如

select convert(char(8), dateadd(ss, DATEDIFF(ss, '2012-12-16 12:00:00', 
                                                 '2012-12-16 12:13:09'), 
                                cast(0 as DateTime)), 108)
Run Code Online (Sandbox Code Playgroud)

收益:

00:13:09
Run Code Online (Sandbox Code Playgroud)

[注意:如果你想要舍入到最接近的3秒,你可以修改它:TSQL:舍入到最近的15分钟间隔 ]