私は2つのdatetime値の差を計算しようとしています。私は違いは次のようにseconds,milliseconds
として返すことにしたいが、私はdatediff(s, begin,end)
とdatediff(ms, begin,end)
を試してみました秒、ミリ秒としてdatediffを表示します
:
4,14
63,54
私は2つのdatetime値の差を計算しようとしています。私は違いは次のようにseconds,milliseconds
として返すことにしたいが、私はdatediff(s, begin,end)
とdatediff(ms, begin,end)
を試してみました秒、ミリ秒としてdatediffを表示します
:
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
を3ゼロにパッドにミリ秒を忘れないでください:
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)
作品は完全にあなたに感謝し、私をそう列名が違うのは、それがあなたを混乱させた場合、申し訳ありませんが、私の問題を説明するためです。 –