Me sale este error:
No se puede convertir el valor de fecha / hora de MySQL a System.DateTime
mientras intento recuperar los datos de una base de datos MySQL. Tengo el tipo de datos de fecha en mi base de datos MySQL. Pero al recuperarlo en mi tabla de datos, aparece el error anterior.
¿Cómo puedo arreglar esto?
.net
asp.net
mysql
asp.net-3.5
Ankit Chauhan
fuente
fuente
Respuestas:
Si busco en Google "No se puede convertir el valor de fecha / hora de MySQL a System.DateTime", veo numerosas referencias a un problema para acceder a MySQL desde Visual Studio. ¿Ese es tu contexto?
Una solución sugerida es:
Referencia: http://bugs.mysql.com/bug.php?id=26054
fuente
Debe agregar
Convert Zero Datetime=True
a su cadena de conexión, por ejemplo:fuente
he añadido tanto
Convert Zero Datetime=True
YAllow Zero Datetime=True
y funciona bienfuente
Baje el valor de fecha y hora como una cadena y haga una
DateTime.ParseExact(value, "ddd MMM dd hh:mm:ss yyyy", culture, styles);
. Solo necesitaría configurar el formato de fecha para la fecha en que regresa de la base de datos. Lo más probable es que lo seayyyy-MM-dd HH:mm:ss
. Al menos lo es para mí.Consulta aquí más información sobre
DateTime.ParseExact
fuente
Deje que MySql convierta su marca de tiempo de Unix en una cadena. Utilice la función mysql FROM_UNIXTIME (113283901)
fuente
También enfrenté el mismo problema y obtuve el nombre de las columnas y sus tipos. Luego lanza (col_Name como Char) desde el nombre de la tabla. De esta manera, obtengo el problema como '0000-00-00 00:00:00' y luego actualizo como fecha y hora válidas en que el error desaparece para mi caso.
fuente
Puede hacer que la aplicación sea totalmente compatible con la fecha y hora que utiliza MySql. Cuando la aplicación se ejecute en tiempo de ejecución, proporcione este código. Primero, vaya a Eventos de la aplicación. En la lista de herramientas
Esto abrirá un nuevo archivo. Este archivo contiene el código utilizado al inicio de la aplicación.
Escriba este código en ese nuevo archivo:
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
fuente
En lugar de cambiar la cadena de conexión, puede usar la
IsValidDateTime
propiedad delMySqlDateTime
objeto para ayudarlo a determinar si puede convertir el objeto como unDateTime
.Tuve un escenario en el que estaba tratando de cargar datos de una columna "UpdateTime" que solo se configuraba explícitamente cuando había una actualización en la fila (a diferencia del InsertedTime que siempre estaba configurado). Para este caso, utilicé el
MySqlDataReader.GetMySqlDateTime
método así:fuente
si "permitir cero fecha y hora = verdadero" no funciona, utilice las siguientes soluciones: -
Agregue esto a su cadena de conexión: "allow zero datetime = no" - eso hizo que el tipo de conversión funcionara perfectamente.
fuente
En un informe de Stimulsoft, agregue este parámetro a la cadena de conexión (haga clic con el botón derecho en la fuente de datos-> editar)
fuente