I way to solve the problem would be to change the data type in the SQL DB to VARCHAR(50)
and the execute the following SQL query in your code.
con.Open();
cmd.CommandText = "INSERT INTO dbo.Person (birthdate) VALUES ('" + this.dateTimePicker.Text + "')";
cmd.Connection = con;
cmd.ExecuteNonQuery();
con.Close();
This will display the value as 16 July 2011 in your SQL DB without the time value. This can then be converted to to a short date string be using the following
string dateString = this.dateTimePicker1.Text;
DateTime Date = Convert.ToDateTime(dateString.ToString());
You can then output the date to a short date format using the following;
MessageBox.Show(Date.ToShortDateString());
Hope this helps.
EDIT
-------------------------------------------------------
Use Sql parameters to avoid
SQL injection[
^].
Enter Null Values for DateTime Column of SQL Server[
^](Explains how to pass values using sql parameters.)