In .NET, we typically use DateTime.MinValue to indicate a NULL or undefined date time value. This works fine if you are only working with .NET code, however if you try to save this into a SQL database, then things will not work.
The reason is because the DateTime type in SQL does not have the same range as the DateTime in .NET. The DateTime type in .NET can accept date time values in the range between 0:00 1/1/0001 (the value of MinValue) to 23:59 12/31/9999 (the value of MaxValue). On the other hand, the DateTime type in SQL can accept date time values in the range between 1/1/1753 to 12/31/9999. So there is a gap from 1/1/0001 to 1/1/1753.
Therefore, this is why you will get a SqlDateTime overflow error message if you try to save a .NET DateTime.MinValue into a SQL DateTime variable. DateTime values are also tricky when working with interoperability (ie. calling Java Web services). Just an additional item to keep in mind when writing code.