In this case the error may be as simple as the fact that you are using an incorrect formatting string with ParseExact: you have semi-colon where there should be a colon, and you use "MM" which looks for two digits for the month value, rather than "M" which would accept either one or two digits.
Compare these two formatting examples which
will compile:
string dString1 = "01/23/2013 10:20:00 AM";
string dString2 = "1/23/2013 10:20:00 AM";
string sFmt1 = @"MM/d/yyyy hh:mm:ss tt";
string sFmt2 = @"M/d/yyyy hh:mm:ss tt";
DateTime date1 = DateTime.ParseExact(dString1, sFmt1, null);
DateTime date2 = DateTime.ParseExact(dString2, sFmt2, null);
I hope you'll take PIEBALDconsult's advice and switch to using native SQL DateTime values rather than strings since, as I understand it, using strings can present a risk of malware injection, as well as localisation issues, hoof-in-mouth disease, etc.