SqlTypeException: SqlDateTime overflow

Problem

I am executing a SQL query and trying to set a datetime column to DateTime.MinValue. I’m getting the following exception:

System.Data.SqlTypes.SqlTypeException: ‘SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.’

The problem is that DateTime.MinValue is 1/1/0001 12:00:00 AM and the SQL Server DateTime minimum value is 1/1/1753 12:00 AM.

Solution

Use System.Data.SqlTypes.SqlDateTime.MinValue instead of DateTime.MinValue when you’re specifying the query parameters:

using(SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString))
{
	using(SqlCommand cmd = new SqlCommand(@"INSERT INTO Articles2 (Title, CreatedDateTime, CreatedBy, ModifiedDateTime) VALUES (@Title, @CreatedDateTime, @CreatedBy, @ModifiedDateTime)", con))
	{
		cmd.Parameters.AddWithValue("@Title", "SqlTypeException: SqlDateTime overflow");
		cmd.Parameters.AddWithValue("@CreatedDateTime", DateTime.Now);
		cmd.Parameters.AddWithValue("@CreatedBy", "Mak");
		cmd.Parameters.AddWithValue("@ModifiedDateTime", System.Data.SqlTypes.SqlDateTime.MinValue);

		con.Open();

		cmd.ExecuteNonQuery();
	}
}
Code language: C# (cs)