-1
SELECT SUM(
  CASE WHEN RESTORE_TIMESTAMP IS NOT NULL THEN DATEDIFF(MI,SHUTDOWN_TIMESTAMP,RESTORE_TIMESTAMP)
  ELSE DATEDIFF(MI,SHUTDOWN_TIMESTAMP,GETDATE()) END )
   AS downtime
  FROM TX_QUAD_STATUS NOLOCK

そして、私はこのエラーが発生しています。

Arithmetic overflow error converting expression to data type int.
4

3 に答える 3

2

ほとんどの場合、これらの行の合計は膨大です。としてキャストすることもできbigintますが、合計を削除して個々の値を確認するだけで十分なアイデアが得られると思います。

SELECT 
  CASE WHEN RESTORE_TIMESTAMP IS NOT NULL THEN DATEDIFF(MI,SHUTDOWN_TIMESTAMP,RESTORE_TIMESTAMP)
  ELSE DATEDIFF(MI,SHUTDOWN_TIMESTAMP,GETDATE()) END
   AS downtime
  FROM TX_QUAD_STATUS NOLOCK

これにより、関連する数値のアイデアが得られます。それらを合計してください - それらが 20 億を超えている場合: 問題。

于 2013-08-22T09:00:54.503 に答える
1

得られる結果は、INT 変数を保持できる値よりも大きくなります。

于 2013-08-22T08:59:22.200 に答える