ホームページ > データベース > mysql チュートリアル > SQL Server で Bigint で DATEADD を使用するときに算術オーバーフロー エラーを回避するにはどうすればよいですか?

SQL Server で Bigint で DATEADD を使用するときに算術オーバーフロー エラーを回避するにはどうすればよいですか?

DDD
リリース: 2024-12-29 17:29:11
オリジナル
220 人が閲覧しました

How to Avoid Arithmetic Overflow Errors When Using DATEADD with Bigints in SQL Server?

DATEADD と Bigint を使用した算術オーバーフロー エラーの処理

SQL Server の DATEADD 関数は、日付と時刻を操作するための強力なツールです。ただし、大きな整数を扱う場合、算術オーバーフロー エラーが発生する可能性があります。

問題:

ユーザーが次のクエリを使用して JavaScript の日付を SQL の日付に変換しようとしました。 :

DATEADD(MILLISECOND, cast(569337307200000 as bigint) % 1000, DATEADD(SECOND, cast(569337307200000 as bigint) / 1000, '19700101'))
ログイン後にコピー

しかし、その結果、例外:

Arithmetic overflow error converting expression to data type int
ログイン後にコピー

解決策:

オーバーフロー エラーを回避するには、秒などのより粗い時間単位を使用して、DATEADD 操作をより小さなステップに分割することをお勧めします。または数分を開始点として使用します。これにより、システムはカレンダー計算をより効率的に処理できるようになります。

たとえば、次のクエリはミリ秒の継続時間から開始時刻を計算します。

-- Avoid using weeks or months due to calendar irregularities

DATEADD(ms, -large_duration_ms%60000, DATEADD(minute, -large_duration_ms/60000, GETDATE()))
ログイン後にコピー

このアプローチにより、算術演算が確実に行われます。整数データ型の制限内で実行され、オーバーフロー エラーが防止されます。

以上がSQL Server で Bigint で DATEADD を使用するときに算術オーバーフロー エラーを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート