ホームページ > データベース > mysql チュートリアル > SQL で大きなミリ秒値を含む DATEADD を使用する場合の算術オーバーフロー エラーを防ぐにはどうすればよいでしょうか?

SQL で大きなミリ秒値を含む DATEADD を使用する場合の算術オーバーフロー エラーを防ぐにはどうすればよいでしょうか?

DDD
リリース: 2024-12-27 15:33:11
オリジナル
619 人が閲覧しました

How Can We Prevent Arithmetic Overflow Errors When Using DATEADD with Large Millisecond Values in SQL?

DATEADD と Bigint による算術オーバーフロー エラーの克服

SQL を利用して JavaScript の日付を SQL の日付に変換する場合、大きすぎるデータを処理するときに複雑さが発生します。データが失われ、算術オーバーフロー例外が発生します。この問題に対処するには、次の SQL ステートメントを検討してください。

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

DATEADD を 2 段階に分割し、分などのより大きな時間単位から始めて、必要なミリ秒まで減らすことで、オーバーフローの問題を回避します。カレンダーの計算が必要となるため、月や週に頼ることは避けてください。

たとえば、ミリ秒単位の大きな電流継続時間に基づいて開始時刻を計算する場合を考えてみましょう。

-- two-step process to prevent overflow

-- subtract minutes (60000ms) as a first step

-- then subtract the remaining milliseconds

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

DATEADD をより小さなステップに分割すると、大きなデータ値を効果的に処理し、算術オーバーフロー エラーを解決できます。

以上がSQL で大きなミリ秒値を含む DATEADD を使用する場合の算術オーバーフロー エラーを防ぐにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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