Преобразование MySQL DATETIME в System.DateTime

Я использую базу данных MySQL с DbLinq, но возникает исключение:

"Невозможно преобразовать mysql datetime в system.datetime"

Как я могу решить эту проблему?

4 ответа

Проверка на любую нулевую дату означает дату как "0000-00-00" в базе данных; это может быть причиной ошибки.

Хорошо, если у вас есть набор результатов, содержащий MySql DateTime значения, вы можете использовать ConvertAll метод вместе с делегатом, использующим DateTime.Parse создать коллекцию System.DateTimeценности.

Вот пример, где "results" - это результат вашего запроса dblinq, содержащего значения даты и времени MySQL:

List<DateTime> dateTimes = results.ConvertAll(delegate(string time){ 
   return DateTime.Parse(time); 
});

Это то, что вы ищете?

Я перемещал столбец в моем сеточном представлении из asp:BoundField в asp:TemplateField, поэтому пришлось явно отображать дату из базы данных MySQL. Через размышление я обнаружил, что в коллекции поля даты указываются как MySqlDateTime, а не system.DateTime.

Я добавил оператор импорта MySql.Data.Types в код и следующий оператор Eval в метке в контексте сетки.

Text = '<% # CType (Eval ("Submitted_Date"), MySql.Data.Types.MySqlDateTime).ToString%>'

Выходной формат: 23.02.2011

Надеюсь, это поможет!

Другие вопросы по тегам