2

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

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

但是,这是四舍五入到最接近的分钟,因此会删除秒值。如何使用 DATEDIFF 实现上述指定的格式?

4

1 回答 1

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)

返回:

00:13:09

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

于 2012-12-17T01:44:17.797 回答