4
ProcessTime: 00:00:00.0000012
RegexResolveTime: 00:00:00.0000421
MessageResolveTime: 00:00:00.0001269 
FullProcessTime: 00:00:00.0001734

わかりました、上記のように datatype で 4 つの列がありますTime(7)。これらの個々の列のすべてのエントリの平均を取得する必要がありますが、演算子Time(7)の有効な型ではありません!AVG

Time(7)列の平均を取得するにはどうすればよいですか?

これらは Timespans であり、SQL サーバーがそれらをそのように見なしていても、個別の時点ではないことを付け加えておきます。

4

1 に答える 1

4

TIME は期間ではなく時点を表すため、TIME を平均化することはできません。2 つのアプローチのいずれかを提案します。

  1. 推奨されるアプローチ:期間をミリ秒、マイクロ秒、ナノ秒の整数として保存します。これにより、必要に応じてさらに精度を高めることができます。

  2. 実際の時間の値ではなく、午前 0 時からのデルタを平均化できるように、変換を前後に適用します。

DECLARE @x TABLE (ProcessTime TIME(7));

INSERT @x VALUES ('00:00:00.0000012'), ('00:00:00.0000016');

SELECT DATEADD(NANOSECOND, AVG(DATEDIFF(NANOSECOND, '00:00:00.0000000', ProcessTime)), 
  CONVERT(TIME, '00:00:00.0000000'))
FROM @x;

結果:

00:00:00.0000014

しかし、それはあなたにとって間違っているように思えませんか? ある時点を保存しておらず、期間のみを気にする場合は、期間を保存してください。表示するときはいつでも時間としてフォーマットできます。

于 2012-07-05T18:34:03.890 に答える