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

Kesalahan - SqlDateTime meluap. Harus antara 1/1/1753 12:00:00 dan 31/12/9999 11:59:59 malam

DateTime di C# adalah tipe nilai, bukan tipe referensi, dan karenanya tidak boleh nol. Namun itu bisa berupa DateTime.MinValue yang konstan yang berada di luar jangkauan Server Sql DATETIME tipe data.

Jenis nilai dijamin selalu memiliki nilai (default) (nol) tanpa harus selalu ditetapkan secara eksplisit (dalam hal ini DateTime.MinValue).

Kesimpulannya adalah Anda mungkin memiliki nilai DateTime yang tidak disetel yang Anda coba berikan ke database.

DateTime.MinValue = 1/1/0001 12:00:00 AM
DateTime.MaxValue = 23:59:59.9999999, December 31, 9999, 
                    exactly one 100-nanosecond tick 
                    before 00:00:00, January 1, 10000

MSDN:DateTime.MinValue

Mengenai Sql Server

MSDN:Sql Server DateTime dan SmallDateTime

Terakhir, jika Anda melewati C# DateTime sebagai string ke sql, Anda perlu memformatnya sebagai berikut untuk mempertahankan presisi maksimum dan untuk mencegah sql server membuat kesalahan serupa.

string sqlTimeAsString = myDateTime.ToString("yyyy-MM-ddTHH:mm:ss.fff");

Pembaruan (8 tahun kemudian)

Pertimbangkan untuk menggunakan sql DateTime2 tipe data yang lebih cocok dengan .net DateTime dengan rentang tanggal 0001-01-01 through 9999-12-31 dan rentang waktu 00:00:00 through 23:59:59.9999999

string dateTime2String = myDateTime.ToString("yyyy-MM-ddTHH:mm:ss.fffffff");

MSDN datetime2 (Transact-SQL)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah ada batasan jumlah tabel dalam database SQL Server DAN tampilan?

  2. SQL Server 2008 FullTextSearch Karakter Tunggal dalam Nama Hilang dari Hasil

  3. Kinerja SQL Server IN vs. EXISTS

  4. Cari nama kolom di semua database

  5. Bagaimana cara menggunakan JOIN alih-alih UNION untuk menghitung tetangga A OR B?