大きな整数による DATEADD オーバーフロー
SQL Server 2008 ユーザーは、次を使用して大きな JavaScript 日付を SQL 日付に変換するときに「算術オーバーフロー エラー」が発生することがあります。 DATEADD 関数。このエラーは、値が整数データ型の最大サイズを超えると発生します。
問題のクエリ:
DATEADD(MILLISECOND, cast(569337307200000 as bigint) % 1000, DATEADD(SECOND, cast(569337307200000 as bigint) / 1000, '19700101'))
この問題を解決するには、DATEADD をより小さな増分に分割します。より大きな時間単位 (秒、分、または時間) から始めて、残りのミリ秒単位で調整します。複雑なカレンダー計算が必要となるため、週または月の使用は避けてください。
次の例を考えてみましょう:
-- Handle large durations by subtracting minutes and then remaining milliseconds. DATEADD(ms, -large_duration_ms%60000, DATEADD(minute, -large_duration_ms/60000, GETDATE()))
この手法により、オーバーフロー エラーを発生させることなく、非常に長い期間の開始時刻を計算できます。
以上がSQL Server 2008 で大きな JavaScript 日付を変換するときに DATEADD オーバーフロー エラーを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。