Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengelakkan Ralat Limpahan DATEADD Apabila Menukar Tarikh JavaScript Besar dalam SQL Server 2008?

Bagaimana untuk Mengelakkan Ralat Limpahan DATEADD Apabila Menukar Tarikh JavaScript Besar dalam SQL Server 2008?

Susan Sarandon
Susan Sarandonasal
2024-12-17 22:40:11354semak imbas

How to Avoid DATEADD Overflow Errors When Converting Large JavaScript Dates in SQL Server 2008?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn