Лучше всего использовать пользовательскую реализацию IUserType, интерфейса, который определяет перевод между собственным типом (DateTime) и типом SQL (datetime).Ключевыми элементами являются методы NullSafeSet / NullSafeGet, которые определяют передачу между IDbCommand / IDataReader и значением объекта в вопросе.