Eu recebo este erro:
Não foi possível converter o valor de data / hora do MySQL para System.DateTime
enquanto tento buscar os dados de um banco de dados MySQL. Eu tenho o tipo de dados de data em meu banco de dados MySQL. Mas, ao recuperá-lo em minha tabela de dados, obteve o erro acima.
Como posso consertar isso?
.net
asp.net
mysql
asp.net-3.5
Ankit Chauhan
fonte
fonte
Respostas:
Se eu pesquisar por "Não é possível converter o valor de data / hora do MySQL em System.DateTime", vejo várias referências a um problema de acesso ao MySQL no Visual Studio. Esse é o seu contexto?
Uma solução sugerida é:
Referência: http://bugs.mysql.com/bug.php?id=26054
fonte
Você deve adicionar
Convert Zero Datetime=True
à sua string de conexão, por exemplo:fonte
i adicionado ambos
Convert Zero Datetime=True
&Allow Zero Datetime=True
e funciona bemfonte
Puxe o valor datetime para baixo como uma string e faça um.
DateTime.ParseExact(value, "ddd MMM dd hh:mm:ss yyyy", culture, styles);
Você só precisa definir o formato da data para a data que você está retornando do banco de dados. Provavelmente éyyyy-MM-dd HH:mm:ss
. Pelo menos é para mim.Confira aqui mais informações sobre o
DateTime.ParseExact
fonte
Deixe o MySql converter seu carimbo de data / hora Unix em string. Use a função mysql FROM_UNIXTIME (113283901)
fonte
Também enfrentei o mesmo problema e obtenho o nome das colunas e seus tipos. Em seguida, converta (col_Name como Char) do nome da tabela. Desta forma, eu recebo o problema como '0000-00-00 00:00:00', então eu atualizo como data e hora válidas em que o erro foge para o meu caso.
fonte
Você pode tornar o aplicativo totalmente compatível com a data e hora que é usado pelo MySql. Quando o aplicativo for executado em tempo de execução, forneça este código. Primeiro, vá para os eventos do aplicativo. Na lista de ferramentas
Isso abrirá um novo arquivo. Este arquivo contém o código usado no início do aplicativo.
Escreva este código nesse novo arquivo:
Partial Friend Class MyApplication Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup My.Application.ChangeCulture("en") My.Application.ChangeUICulture("en") My.Application.Culture.DateTimeFormat.ShortDatePattern = "yyyy-MM-dd" My.Application.Culture.DateTimeFormat.LongDatePattern = "yyyy-MM-dd" My.Application.Culture.DateTimeFormat.LongTimePattern = "HH:mm:ss" My.Application.Culture.DateTimeFormat.ShortTimePattern = "HH:mm:ss" End Sub End Class
fonte
Em vez de alterar a string de conexão, você pode usar a
IsValidDateTime
propriedade doMySqlDateTime
objeto para ajudá-lo a determinar se pode converter o objeto como umDateTime
.Tive um cenário em que estava tentando carregar dados de uma coluna "UpdateTime" que só era definida explicitamente quando havia uma atualização da linha (em oposição ao InsertedTime que sempre estava definido). Para este caso, usei o
MySqlDataReader.GetMySqlDateTime
método assim:fonte
se "permitir zero datetime = true" não estiver funcionando, use as seguintes soluções: -
Adicione isto à sua string de conexão: "allow zero datetime = no" - isso fez o tipo de elenco funcionar perfeitamente.
fonte
Em um relatório da Stimulsoft, adicione este parâmetro à string de conexão (clique com o botão direito na fonte de dados-> editar)
fonte