Menukar DateTime2 kepada DateTime: Menangani Ralat Luar Julat
Masalah:
Menyimpan jadual data dengan lajur DateTime ke pangkalan data SQL Server mengakibatkan ralat: "Penukaran jenis data datetime2 kepada jenis data datetime menghasilkan nilai di luar julat." Punca punca tidak dapat dilihat dengan serta-merta, walaupun lajur ditakrifkan sebagai DateTime.
Penjelasan:
Ralat timbul daripada ketidakpadanan jenis data antara perwakilan DateTime aplikasi dan medan datetime
pangkalan data. Walaupun kod mungkin menggunakan DateTime
, rangka kerja asas (seperti Rangka Kerja Entiti) selalunya lalai kepada DateTime2
. Isu ini berpunca daripada DateTime.MinValue
(01/01/0001), yang berada di luar julat yang boleh diterima untuk SQL Server datetime
(1753-01-01 hingga 9999-12-31).
Penyelesaian:
1. Pembetulan Sisi Aplikasi (Disyorkan):
Mulakan lajur DateTime anda kepada tarikh yang sah sebelum menyimpan. Gunakan DateTime.Today
, DateTime.UtcNow
atau nilai lain yang sesuai. Ini menghalang DateTime.MinValue
yang bermasalah daripada digunakan.
2. Pembetulan Sisi Pangkalan Data:
Ubah suai jenis data lajur pangkalan data daripada datetime
kepada datetime2
. datetime2
menawarkan julat tarikh yang lebih luas (0001-01-01 hingga 9999-12-31), menghapuskan isu di luar lingkungan. Walau bagaimanapun, berhati-hati dengan hubungan utama asing; mengemas kini jenis lajur mungkin memerlukan pelarasan dalam jadual berkaitan.
Pertimbangan Penting:
DateTime
kepada tarikh yang sah untuk mengelakkan ralat yang tidak dijangka.datetime
asal.Dengan melaksanakan salah satu penyelesaian, anda boleh menyelesaikan ralat di luar julat dan memastikan kegigihan data yang lancar. Pembetulan sisi aplikasi biasanya lebih disukai kerana pendekatannya yang lebih bersih dan mengelakkan kemungkinan komplikasi skema pangkalan data.
Atas ialah kandungan terperinci Ralat Penukaran DateTime2 ke DateTime: Bagaimana untuk Menyelesaikan Nilai Luar Julat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!