If you use ParseExact, then it expects the string format date to match exactly the format you give it - and clearly strcreateDate does not do that. You could try DateTime.Parse (or DateTime.TryParse for the non-erroring version, it reports success via a bool return value instead), but the fact that you are getting an error implies that your system is not set to use "yyyy-MM-dd HH:mm tt" as it's current culture.
If you do use Parse or TryParse, they will also expect the current culture, so your code snippet above will work.
Or, you could provide the format to ToString and produce a string in the expected format directly:
string strcreateDate = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm tt");
But the way I would do it is to pass the DateTime value through to SQL directly, without converting it to a string at any point - SQL understands DateTime objects and provided you hand it over via a parametrized query to an Sql DateTime field, it will work without any conversion.