Use the proper data types to begin with or you will not be using indices when searching. Or, if you really do want to use the wrong data types, at least convert the search clause data, not the column data - i.e. convert the searched dates to strings in the same format as those stored rather than convert the stored data to dates. The first requries one conversion and can then use string indexing (if present), while the latter needs one conversion per row and can't use indexing.
But obviously it would be better to use date or datetime data types with no conversion needed and proper indexing to begin with.
The way this works is exactly the same way it would work if you store date and time as an unsigned integer and use either of the two where clauses
WHERE FROM_UNIXTIME(inttime) > '2012-12-15';
WHERE inttime > UNIX_TIMESTAMP('2012-12-15');
where the first one would NOT use index for inttime since the column needs to be converted, while the second would use index for inttime since it is provided with an unsigned integer to search for.