我在 SQL Server 2008 中进行 DATEDIFF() 调用作为存储过程的一部分,它可能会返回小至 3 秒或更短的值。我希望格式为 MM:SS(即 3 秒时的 00:03)。我最初是在几分钟内使用这个电话:
DATEDIFF(mi, SELECT MAX(startDate) FROM myTable , SELECT MAX(EndDate) FROM myTable)
但是,这是四舍五入到最接近的分钟,因此会删除秒值。如何使用 DATEDIFF 实现上述指定的格式?
我在 SQL Server 2008 中进行 DATEDIFF() 调用作为存储过程的一部分,它可能会返回小至 3 秒或更短的值。我希望格式为 MM:SS(即 3 秒时的 00:03)。我最初是在几分钟内使用这个电话:
DATEDIFF(mi, SELECT MAX(startDate) FROM myTable , SELECT MAX(EndDate) FROM myTable)
但是,这是四舍五入到最接近的分钟,因此会删除秒值。如何使用 DATEDIFF 实现上述指定的格式?
精确到秒:
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 分钟间隔]