2012-12-17 47 views
2

我在SQL Server 2008中作爲存儲過程的一部分進行DATEDIFF()調用,這可能會返回小至3秒或更短的值。我希望格式爲MM:SS(即3秒00:03)。我原來用的是電話以分鐘爲單位:tsql DATEDIFF在幾分鐘內調用沒有四捨五入關閉

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

然而,這是四捨五入爲最接近的分鐘,因此擦除秒值。如何使用DATEDIFF實現上述格式?

回答

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) 

回報:

00:13:09 

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