2 つの SQL DateTime 値の差を秒単位で抽出しようとしています。パフォーマンス監視のために小数点以下の桁数を使用しています。
「作成」および「終了」日時を持つテーブル「ページログ」があります。過去には、次のことができました。
SELECT DATEDIFF(ms, pagelog_created, pagelog_end)/1000.00 as pl_duration FROM pagelog
ただし、次のエラーが発生し始めました。
Msg 535, Level 16, State 0, Line 1
The datediff function resulted in an overflow. The number of dateparts separating two date/time instances is too large. Try to use datediff with a less precise datepart.
このエラーに対して、精度の低い測定単位を使用する必要があるという多くの回答を見てきました。しかし、DATEDIFF(s,..,..) は INT の結果を返し、必要な精度が失われるため、2.1 秒と 2.9 秒を区別する必要がある場合、これはほとんど役に立ちません。
私は当初、これはテーブル内のいくつかの値が巨大な範囲を持っているために発生したと考えていましたが、これを実行しています:
SELECT DATEDIFF(s, pagelog_created, pagelog_end) FROM pagelog
ORDER BY DATEDIFF(s, pagelog_created, pagelog_end) DESC
30837 の最大値を返します。これは 8.5 時間または 30,837,000 ミリ秒であり、私の知る限り SQL INT の範囲内ですか?
2つのオプションがあると言える限り、どんな助けも大歓迎です:
- 何らかの方法でデータの問題を修正し、犯人の値を見つけます
- 値の差を計算する別の方法を見つける
ありがとう!