Remove the quotes:
string query = "SELECT SUM (COUNT) FROM Count_EPF WHERE date = '@C' ";
Becomes:
string query = "SELECT SUM (COUNT) FROM Count_EPF WHERE date = @C ";
Otherwise the parameter name is within an SQL string and is not treated as a parameter at all.
[edit]
Oh, and don't pass the string - pass the DateTime, value directly:
cmd.Parameters.AddWithValue("@C", dateTimePicker1.Value);
That way, SQL doesn't have to interpret the string into a date with all the possible misinterpretations that can cause.
[/edit]