Невозможно преобразовать значение даты и времени MySQL в System.DateTime

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

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

Ответ 1

Проблема в формате, на самом деле mysql имеет другой формат (yyyy-mm-dd) для типа данных даты и времени, и для решения этой проблемы используйте библиотеку соединителей 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

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

Ответ 2

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 Date в DateTime.MinValue().

что SOLVED

Ответ 3

Добавление "convert zero 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

Ответ 4

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

дата установки таблицы обновлений = null

Ответ 5

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