Limpahan DATEADD dengan Integer Besar
Pengguna SQL Server 2008 mungkin menghadapi "ralat limpahan Aritmetik" apabila menukar tarikh JavaScript besar kepada tarikh SQL menggunakan fungsi DATEADD. Ralat berlaku apabila nilai melebihi saiz maksimum jenis data integer.
Pertanyaan yang menyinggung:
DATEADD(MILLISECOND, cast(569337307200000 as bigint) % 1000, DATEADD(SECOND, cast(569337307200000 as bigint) / 1000, '19700101'))
Untuk mengatasi isu ini, pecahkan DATEADD kepada penambahan yang lebih kecil. Mulakan dengan unit masa yang lebih besar (saat, minit atau jam) dan kemudian laraskan mengikut baki milisaat. Elakkan menggunakan minggu atau bulan kerana ini melibatkan pengiraan kalendar yang rumit.
Pertimbangkan contoh berikut:
-- Handle large durations by subtracting minutes and then remaining milliseconds. DATEADD(ms, -large_duration_ms%60000, DATEADD(minute, -large_duration_ms/60000, GETDATE()))
Teknik ini membolehkan pengiraan masa mula dengan tempoh yang sangat besar tanpa ralat limpahan.
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Ralat Limpahan DATEADD Apabila Menukar Tarikh JavaScript Besar dalam SQL Server 2008?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!