Невозможно преобразовать значение даты / времени MySQL в System.DateTime - PullRequest
12 голосов
/ 29 мая 2010

Я использую ibatis и C #.я получаю результат из запроса на выборку, в котором CreatedDate является одним из полей.Тип данных CreatedDate в Mysql - Дата.Я присваиваю набор результатов запроса select Ilist .

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

Ответы [ 8 ]

74 голосов
/ 18 мая 2013
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().

, которое РЕШЕНО

9 голосов
/ 10 сентября 2013

Добавление «преобразовать ноль 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

6 голосов
/ 29 мая 2010

Проблема в формате, на самом деле 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

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

5 голосов
/ 19 сентября 2011

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

update table set date = null
2 голосов
/ 30 мая 2010

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

0 голосов
/ 05 июня 2018

Одна вещь, которая работает, тоже меняет действие вашего читателя. У меня была эта проблема, когда я писал

string myvar = reader.GetString(0);

Тогда я писал это

object myvar = reader.GetValue(0);

И больше ошибок нет.

0 голосов
/ 10 мая 2018

Вам нужно сделать простое изменение со строкой соединения, которую вы добавили для базы данных MySql. Т.е. КОНВЕРТ. НУЛЕВОЙ ДАННЫЙ = ИСТИНА

<add name="NAMEOFYOURCONNECTIONSTRING" connectionString="server's HOSTNAMEorIP(i.e Localhost or IP address);user id=USER_ID(i.e User ID for login Database);Pwd=PASSWORD(i.e User Password for login Database);persistsecurityinfo=True;database=NAMEOFDATABASE;Convert Zero Datetime=True" providerName="MySql.Data.MySqlClient"/>
0 голосов
/ 13 марта 2018

Это сработало для меня:

SELECT 
    IF(tb.Date1 = '0000-00-00 00:00:00', NULL, tb.Date1) AS ValidDate
FROM MyTable AS tb
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...