Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Błąd — przepełnienie SqlDateTime. Musi przypadać między 1.01.1753 12:00:00 a 31.12.9999 23:59:59

DateTime w języku C# jest typem wartości, a nie typem referencyjnym i dlatego nie może mieć wartości null. Może to być jednak stała DateTime.MinValue który jest poza zakresem serwerów SQL DATETIME typ danych.

Typy wartości są gwarantowane, że zawsze mają (domyślną) wartość (zero) bez konieczności jawnego ustawiania (w tym przypadku DateTime.MinValue).

Wniosek jest taki, że prawdopodobnie masz nieustawioną wartość DateTime, którą próbujesz przekazać do bazy danych.

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

Odnośnie serwera SQL

MSDN:Sql Server DateTime i SmallDateTime

Wreszcie, jeśli okaże się, że przechodzisz C# DateTime jako ciąg do sql, musisz go sformatować w następujący sposób, aby zachować maksymalną precyzję i zapobiec wystąpieniu podobnego błędu przez serwer sql.

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

Aktualizacja (8 lat później)

Rozważ użycie sql DateTime2 typ danych, który lepiej pasuje do .net DateTime z zakresem dat 0001-01-01 through 9999-12-31 i przedział czasu 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. Dlaczego podczas nawiązywania połączenia z programem SQL Server wystąpił błąd związany z siecią lub specyficzny dla wystąpienia?

  2. SQL Server:funkcje z wartościami przechowywanymi w tabeli a procedury składowane

  3. Utwórz kopię zapasową pojedynczej tabeli z jej danymi z bazy danych na serwerze sql 2008

  4. Flask-SQLAlchemy inna liczba rekordów dla .count() i .all()

  5. Najlepszy odpowiednik IsInteger w SQL Server