2010-05-29 1 views
10

Я использую ibatis и C#. Я получаю результат от запроса выбора, который создал CreateDate как одно из полей. Datatype of CreatedDate в Mysql - это дата. Я назначаю результирующий набор запроса select в список Ilist < DeliveryClass>.Невозможно преобразовать значение даты и времени MySQL в System.DateTime

Здесь DeliveryClass CreatedDate as DateTime. Когда я запускаю приложение, я получаю Невозможно преобразовать значение даты/времени MySQL в System.DateTime. В чем может быть проблема?

ответ

6

Проблема в формате, на самом деле MySQL имеет другой формат (гггг-мм-дд) для/типа данных даты времени и решить эту проблему с помощью библиотеки соединителя MySQL для .net здесь http://dev.mysql.com/downloads/connector/net/ это будет дать другой тип данных для даты/времени, называемого MysqlDateTime

или вы можете форматировать данные о дате/времени в вашем SQL заявления с помощью date_format (дата, формат) вы можете получить более подробную информацию здесь http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format

но я не рекомендую это, потому что вы потеряете силу даты/времени e типа данных (например, вы не можете сравнивать), потому что теперь вы преобразуете его в строку, но я думаю, что он будет полезен в отчетах

+0

На обновление разъем к последней не решить мою проблему –

+0

разъем сам он не решит вашу проблему, это зависит, как вы запрашиваете данные ?? например, я использовал шаблон генерации doodads моего поколения i, переопределяющий свойство retrieve для datetime (чтение значения из datatable => конвертировать его из mysqldatetime в .net datetime) как вы извлекаете данные? –

2

Он может быть вне диапазона объекта DateTime. Я видел это пару раз. Попробуйте изменить sql, чтобы вернуть текущую дату вместо своего столбца и посмотреть, идет ли она через ok.

3

я решил мою проблему, установив значения столбца по умолчанию, как нулевые данные, а не с помощью 0000-00-00 00:00:00: Дата

обновления таблицы комплект = нуль

52
MySqlConnection connect = new MySqlConnection("server=localhost; database=luttop; user=root; password=1234; pooling = false; convert zero datetime=True"); 

Добавление convert zero datetime=True к строке соединения будет автоматически конвертировать 0000-00-00 Значения даты в DateTime.MinValue().

, который решаемые

7

Добавление «конвертировать нулевой DateTime = True» в строке соединения решить мою проблему.

<connectionStrings> <add name="MyContext" connectionString="Datasource=localhost;Database=MyAppDb;Uid=root;Pwd=root;CHARSET=utf8;convert zero datetime=True" providerName="MySql.Data.MySqlClient" /> </connectionStrings> 

С уважением PS