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

时间:2012-12-17 01:32:43

标签: sql-server-2008 tsql datetime datediff

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

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

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

1 个答案:

答案 0 :(得分:10)

到最近的第二个:

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

Ref

注意: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) 时,您最容易接近:

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)

e.g。

00:13:09

返回:

{{1}}

[注意:如果你想要四舍五入到最接近的3秒,你可以修改它:TSQL: Round to Nearest 15 Minute Interval]