Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

System.Data.SqlTypes.SqlTypeException:SqlDateTime overflow

Matt kemungkinan besar berada di jalur yang benar. Anda telah menetapkan nilai default untuk kolom Anda - namun, itu hanya akan berlaku jika Anda benar-benar memasukkan sesuatu ke dalam tabel Anda di database.

Saat Anda melakukan tes unit, seperti yang Anda katakan, kemungkinan besar Anda menginisialisasi variabel DateTime ke sesuatu (atau tidak - maka itu akan menjadi DateTime.MinValue, yaitu 01/01/0001) dan kemudian Anda mengirimkannya ke SQL Server dan nilai ini berada di luar rentang yang valid untuk DATETIME di SQL Server (seperti yang dinyatakan dengan jelas oleh kesalahan).

Jadi yang perlu Anda lakukan adalah menambahkan baris ke pengujian unit .NET Anda untuk menginisialisasi variabel DateTime ke "DateTime.Today":

DateTime myDateTime = DateTime.Today

lalu masukkan ke SQL Server.

ATAU:Anda dapat mengubah pernyataan SQL INSERT Anda sehingga tidak memasukkan nilai untuk kolom itu - sepertinya sekarang, itu memang melakukan itu (dan mencoba memasukkan itu - untuk SQL Server - tanggal yang tidak valid ke dalam tabel). Jika Anda tidak menentukan kolom itu di INSERT Anda, maka kolom default getdate() akan masuk dan memasukkan tanggal hari ini ke dalam kolom.

Marc



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa menjalankan .sql dari C#?

  2. Menggunakan tabel pivot dengan total kolom dan baris di sql server 2008

  3. Cara memetakan bidang entitas yang namanya adalah kata yang dicadangkan di JPA

  4. LINQ2SQL - Gabungan silang dipancarkan ketika saya ingin bergabung dalam

  5. Apakah Mengakhiri Penggunaan menutup Koneksi SQL yang terbuka