Een DateTime
in C# is een waardetype, geen referentietype, en kan daarom niet null zijn. Het kan echter de constante zijn DateTime.MinValue
die buiten het bereik van Sql Servers DATETIME
. valt data type.
Waardetypes hebben gegarandeerd altijd een (standaard) waarde (van nul) zonder dat dit altijd expliciet hoeft te worden ingesteld (in dit geval DateTime.MinValue).
Conclusie is dat je waarschijnlijk een niet-ingestelde DateTime-waarde hebt die je probeert door te geven aan de 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
Over SQL Server
MSDN:Sql Server DateTime en SmallDateTime
Ten slotte, als u merkt dat u een C# DateTime
. passeert als een string naar sql, moet u deze als volgt formatteren om maximale precisie te behouden en om te voorkomen dat de sql-server een soortgelijke fout genereert.
string sqlTimeAsString = myDateTime.ToString("yyyy-MM-ddTHH:mm:ss.fff");
Update (8 jaar later)
Overweeg het gebruik van de sql DateTime2
datatype dat beter aansluit bij de .net DateTime
met datumbereik 0001-01-01 through 9999-12-31
en tijdbereik 00:00:00 through 23:59:59.9999999
string dateTime2String = myDateTime.ToString("yyyy-MM-ddTHH:mm:ss.fffffff");