Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

System.Data.SqlTypes.SqlTypeException:SqlDateTime overflow

Molto probabilmente Matt è sulla strada giusta. Hai definito un valore predefinito per la tua colonna, tuttavia, ciò avrà effetto solo se inserisci effettivamente qualcosa nella tua tabella nel database.

Quando esegui uno unit test, come dici tu, molto probabilmente inizializzi la variabile DateTime su qualcosa (o meno, quindi sarà DateTime.MinValue, che è 01/01/0001) e quindi lo invii a SQL Server e questo valore non rientra nell'intervallo valido per un DATETIME su SQL Server (come indica chiaramente l'errore).

Quindi quello che devi fare è aggiungere una riga al tuo unit test .NET per inizializzare la variabile DateTime su "DateTime.Today":

DateTime myDateTime = DateTime.Today

e quindi inserirlo in SQL Server.

OPPURE:puoi modificare la tua istruzione SQL INSERT in modo che non inserisca un valore per quella colonna - sembra proprio ora, lo fa (e tenta di inserire quella - per SQL Server - data non valida nella tabella). Se non specifichi quella colonna nel tuo INSERT, allora il valore predefinito della colonna di getdate() si avvierà e inserirà la data odierna nella colonna.

Marco