Bigint を使用した DATEADD の算術オーバーフローの克服
大きな bigint 値で DATEADD を使用するときに算術オーバーフロー エラーが発生すると、イライラすることがあります。この問題を解決するには、DATEADD 操作を複数の手順で実行し、秒や分などのより粗い時間単位から開始することが適切な回避策です。
発生したエラーで強調されているように、大きすぎる bigint 値を直接追加すると、日付式は算術オーバーフロー エラーを引き起こす可能性があります。これを解決するには、操作を小さなステップに分割します。
の場合たとえば、大きな電流持続期間を考慮して開始時間を計算する場合(ミリ秒):
DECLARE @large_duration_ms BIGINT = 569337307200000; -- Step 1: Subtract minutes (60000ms) -- (a) Determine number of minutes DECLARE @minutes_to_subtract BIGINT = @large_duration_ms / 60000; -- (b) Subtract minutes DECLARE @start_time_minutes DATETIME = DATEADD(MINUTE, -@minutes_to_subtract, GETDATE()); -- Step 2: Add remaining milliseconds DECLARE @milli_seconds_to_add BIGINT = @large_duration_ms % 60000; DECLARE @start_time_final DATETIME = DATEADD(MILLISECOND, @milli_seconds_to_add, @start_time_minutes); SELECT @start_time_final;
この複数ステップのアプローチを使用すると、潜在的なオーバーフロー エラーを回避し、大きな bigint 値から日付を正確に計算できます。
以上が大きな Bigint で DATEADD を使用するときに算術オーバーフロー エラーを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。