.net - No se puede convertir el valor de fecha/hora de MySQL a System.DateTime
asp.net asp.net-3.5 (7)
Me sale este error:
No se puede convertir el valor de fecha / hora de MySQL a System.DateTime
mientras trato de buscar 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 datatable, obtiene el error anterior.
¿Cómo puedo arreglar esto?
Permita que MySql convierta su marca de tiempo de unix en cadena. Use la función mysql FROM_UNIXTIME (113283901)
Puede hacer que la aplicación sea totalmente compatible con la fecha y hora que utiliza MySql. Cuando la aplicación se ejecuta en tiempo de ejecución, proporcione este código. Primero vaya a los eventos de la aplicación. En la lista de herramientas
- Ir al proyecto
- Propiedades del proyecto
- Seleccione la pestaña Aplicación
- Ver eventos de aplicaciones
Esto abrirá un nuevo archivo. Este archivo contiene el código utilizado al inicio de la aplicación.
Escribe 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
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. ¿Es ese tu contexto?
Una solución sugerida es:
Esto no es un error sino un comportamiento esperado. Consulte el manual en las opciones de conexión y establezca "Permitir fecha y hora cero" en verdadero, como en las imágenes adjuntas, y el error desaparecerá.
Referencia: http://bugs.mysql.com/bug.php?id=26054
También me enfrenté al mismo problema, y obtuve el nombre de las columnas y sus tipos. Luego, eche (col_Name como Char) desde el nombre de la tabla. De esta manera, aparece el problema como "0000-00-00 00:00:00" y luego actualizo como fecha y hora válidas para que el error desaparezca en mi caso.
Tire del valor de fecha y hora como una cadena y haga un DateTime.ParseExact(value, "ddd MMM dd hh:mm:ss yyyy", culture, styles);
Solo necesita configurar el formato de fecha para la fecha en que regresa de la base de datos. Lo más probable es yyyy-MM-dd HH:mm:ss
. Al menos es para mí.
Consulte aquí más información sobre DateTime.ParseExact
agregué tanto Convert Zero Datetime=True
y Allow Zero Datetime=True
y funciona bien
Debe agregar Convert Zero Datetime=True
a su cadena de conexión, por ejemplo:
server=localhost;User Id=root;password=mautauaja;Persist Security Info=True;database=test;Convert Zero Datetime=True