13
我試圖計算兩個日期時間值之間的差異。以秒,毫秒顯示datediff
我試圖datediff(s, begin,end)
和datediff(ms, begin,end)
但是我想的差異返回爲seconds,milliseconds
類似如下:
4,14
63,54
我試圖計算兩個日期時間值之間的差異。以秒,毫秒顯示datediff
我試圖datediff(s, begin,end)
和datediff(ms, begin,end)
但是我想的差異返回爲seconds,milliseconds
類似如下:
4,14
63,54
SELECT
DATEDIFF(MILLISECOND, begin, end)/1000,
DATEDIFF(MILLISECOND, begin, end) % 1000
FROM ...;
如果你絕對必須形成它作爲您的SQL查詢字符串(不能你的表現層這樣做),則:
SELECT
CONVERT(VARCHAR(12), DATEDIFF(MILLISECOND, begin, end)/1000)
+ ','
+ RIGHT('000' + CONVERT(VARCHAR(4), DATEDIFF(MILLISECOND, begin, end) % 1000), 3)
FROM ...;
而且我真的希望你有更好的列名比begin
和end
。
其實明顯的答案會產生錯誤的結果爲毫秒1 - 99:
Example 1 second, 27 milliseconds:
1) DATEDIFF % 1000 will return 27
2) CONVERT will convert to '27'
3) String concatenation will build '1' + ',' + '27'
4) Result: '1.27' which means 270ms rather than 27ms
不要忘記墊毫秒到三個零:
DECLARE @start datetime2(7) = '2015-07-03 09:24:33.000'
DECLARE @end datetime2(7) = '2015-07-03 09:24:34.027'
SELECT
CAST (DATEDIFF(SECOND, @start, @end) AS nvarchar(3)) + N'.' +
RIGHT('000' + CAST((DATEDIFF(MILLISECOND, @start, @end) % 1000) AS nvarchar(3)), 3)
完美的作品感謝你和我是列名是不同的,它只是爲了解釋我的問題,抱歉,如果它讓你困惑。 – 2013-03-27 14:06:52