我在SQL Server 2008中进行DATEDIFF()调用,作为存储过程的一部分,它可能返回小至3秒或更短的值。我希望格式为MM:SS(即3秒时00:03)。我最初在几分钟内使用了这个电话:
DATEDIFF(mi, SELECT MAX(startDate) FROM myTable , SELECT MAX(EndDate) FROM myTable)
但是,这会向下舍入到最近的分钟,从而消除秒值。如何使用DATEDIFF实现上述格式?
答案 0 :(得分:10)
到最近的第二个:
DATEDIFF(ss, SELECT MAX(startDate) FROM myTable, SELECT MAX(EndDate) FROM myTable)
注意: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]