Foros del Web » Programación para mayores de 30 ;) » .NET »

No puedo insertar fecha en campo DateTime MySQL

Estas en el tema de No puedo insertar fecha en campo DateTime MySQL en el foro de .NET en Foros del Web. Hola, Estoy trabajando en un a aplicacion VB.Net 2005 y la base de datos en MySql. Al tratar de insertar una fecha del tipo DateTime ...
  #1 (permalink)  
Antiguo 16/06/2008, 16:45
Avatar de gabyweb  
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 364
Antigüedad: 22 años, 3 meses
Puntos: 0
No puedo insertar fecha en campo DateTime MySQL

Hola,

Estoy trabajando en un a aplicacion VB.Net 2005 y la base de datos en MySql. Al tratar de insertar una fecha del tipo DateTime en MySql me da el siguiente error:

"Type of value has a mismatch with column typeCouldn't store <16/06/2008 12:29:46 PM> in fecha_creacion Column. Expected type is MySqlDateTime."

Tengo una variable de tipo string con el siguiente formato:
Código:
Dim fecha As DateTime = DateTime.Now
Dim fec AsString
fec = Format(fecha, "yyyy-MM-dd hh:mm:ss")
 
'Aqui convierto el string a DateTime
fecha = Convert.ToDateTime(fec)
 
'Al convertir el string a datetime, pierde el formato que le indico
'y es ahí donde me muestra el error
 
 

Hay algo en el codigo que no está bien?
El campo de la bd es de tipo DateTime con formato yyyy/mm/dd hh:mm:ss

Espero puedan ayudarme, muchas gracias

__________________
Gaby :adios:
  #2 (permalink)  
Antiguo 16/06/2008, 17:16
 
Fecha de Ingreso: marzo-2007
Ubicación: Celayork
Mensajes: 38
Antigüedad: 17 años, 2 meses
Puntos: 3
Respuesta: No puedo insertar fecha en campo DateTime MySQL

Yo tambien me tope con ese problema (tambien estoy programando en VB2005 y MySQL), y lo que hice fue en MySQL, el campo donde guardo la fecha, lo deje como CHAR(10) y que solo guarde año-mes-dia (en ese orden para que me haga bien las comparaciones y demás).

A menos de que te sea importante guardar la hora, pues, igual sería cosa de añadirle más caracteres al campo.

Saludos, espero te sea de ayuda.
  #3 (permalink)  
Antiguo 27/07/2008, 09:07
Avatar de emitojleyes  
Fecha de Ingreso: octubre-2005
Mensajes: 62
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: No puedo insertar fecha en campo DateTime MySQL

Hola!
te comento como he resuelto yo este problema;
inicialmente no tuve problemas para cargar una fecha en mi dataset.
Posteriormente, en otra parte ddel codigo, tuve un problema donde se me guardaban las fechas con valor "0000-00-00 00:00:00", por lo que se me recomendó en el string de la conexion, setear el siguiente valor:
"...; Allow Zero Datetime=true;"
Entonces este segundo problema se me solucionó.

Ahora, al querer volver a ejecutar esta aprte del codigo donde se quiere guardar el valor datetime al dataset, me salía ese errror:
Expected type is MySqlDateTime

Simplemente, cambié el string d la conexion a
"...; Allow Zero Datetime=false;"
y me funcionó.

Cualquier cosa, avisame si esto viene a solucionar tu inconveniente. Saludos!
__________________
Emilio J. Leyes
Ingeniero en Informática

Salta, Argentina
  #4 (permalink)  
Antiguo 28/07/2008, 08:04
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: No puedo insertar fecha en campo DateTime MySQL

Estás cometiendo al menos tres errores:
1. El formato aplicado no debe ser
Código:
Format(fecha, "yyyy-MM-dd hh:mm:ss")
sino
Código:
Format(fecha, "yyyy-MM-dd HH:mm:ss")
Esa "HH" es crítica, porque es precisamente la que te hace desaparecer el AM/PM del string, y que es una de las cosas que te está causando problemas.

2. Suponiendo que vas a enviar la fecha como string, la reconversión a DateTime es absolutamente innecesaria. MySQL puede tomar el valor como string con el formato correcto y meterlo en un DateTime por conversión implícita. Incluso en ese caso, si dejas que VS lo convierta directamente a string, va a poner las horas en formato AM/PM, que MySQL no maneja.

3. Si estás introduciendo en la base el valor como DateTime, puedes tener problemas con la regionalización, a menos que manejes el CultureInfo de la conversión correctamente. Es decir, si la aplicación por alguna razón pretende cargarlo a la variable como "es-AR", "es-MX" o cualquier otra cosa que no sea "en-US", puede haber un error de conversión y volverse un valor incompatible.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 30/07/2008, 07:01
Avatar de gabyweb  
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 364
Antigüedad: 22 años, 3 meses
Puntos: 0
Pregunta Respuesta: No puedo insertar fecha en campo DateTime MySQL

Gracias a todos por su ayuda,

En conclusión entonces mejor manejo las fechas como string?
__________________
Gaby :adios:
  #6 (permalink)  
Antiguo 30/07/2008, 08:25
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: No puedo insertar fecha en campo DateTime MySQL

Si estás trabajando en .Net, te recomiendo usar el conector de MySQL y pasarlas como parámetros, sea de las sentencias o de los Store Procedures. Es más seguro.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 30/07/2008, 09:35
 
Fecha de Ingreso: febrero-2005
Mensajes: 37
Antigüedad: 19 años, 2 meses
Puntos: 0
Respuesta: No puedo insertar fecha en campo DateTime MySQL

Nose a vosotros pero yo si pongo en vb un campo DateTime me dice que está obsoleto y que use DateTime ... Me quedo a cuadros cada vez que me lo dice. Jejejeje
  #8 (permalink)  
Antiguo 30/07/2008, 12:37
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: No puedo insertar fecha en campo DateTime MySQL

¿Has usado el MySQL Connector .Net?
¿Sabes usar parámetros en objetos MySqlCommand?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 01/08/2008, 18:55
 
Fecha de Ingreso: febrero-2005
Mensajes: 37
Antigüedad: 19 años, 2 meses
Puntos: 0
Respuesta: No puedo insertar fecha en campo DateTime MySQL

Si te refieres a mí... Si uso MySQL Connector 5.1.6
  #10 (permalink)  
Antiguo 01/08/2008, 19:33
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: No puedo insertar fecha en campo DateTime MySQL

Entonces no deberías tener problema. Simplemente es pasarle a un objeto de clase MySqlCommand, una variable DateTime como parámetro (objetoMySqlCommand.Parameters.Add"(?Pseudovar",obj etoDateTime).Direction=Direction.InPut)antes de ejecutar el método ExecuteNonQuery().
El conector se encarga del resto. El único considerando que tienes que tener es que si la comparación de la consulta se hace sobre un Date, debes usar la función DATE(?Pseudovar) para que no haga una conversión implícita no deseada.
Un ejemplo del string de consulta:
Código:
"SELECT AUTOR, OBRA, EDITORIAL 
FROM BIBLIOTECA 
WHERE FECHAINGRESO = DATE(?FFECHA);"
En este contexto "?FFECHA" es una pseudovariable que será suplantada por el parámetro al momento de la ejecución. Obviamente sabes que el "?" precedente es para que el MySql Conenctor .Net sepa que es un parámetro en la sentencia...

Este es un método que no falla (si lo hace es por un error de lógica o sintaxis).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 15/09/2010, 15:08
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: No puedo insertar fecha en campo DateTime MySQL

Se que es tarde para responder a esto. Pero seguro habrá alguién como yo buscando otra solución a éste problema.

En mi caso, en VB6 lo resolví de ésta manera.

Dim itmFecha as String
itmFecha = Date
itmFecha = " '" & Format(itmFecha, "yyyy-mm-dd") & "'"

Espero que les sea de utilidad.

Aclaración: En MySQL, el campo lo tengo como "Date", "Not NULL"


Saludos.
  #12 (permalink)  
Antiguo 16/09/2010, 11:49
 
Fecha de Ingreso: marzo-2007
Mensajes: 74
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: No puedo insertar fecha en campo DateTime MySQL

Comentario:
Como otra opcion puden usar la funcion str_to_date

ejemplo
insert into NombreTabla (Campofecha) values (str_to_date('16-09-2010', '%d-%m-%Y'))

Para leer en un formato
SELECT date_format( CampoFecha, '%d-%m-%Y' ) FROM NombreTabla


Aqui estan muchos ejmplos de la definicion

http://dev.mysql.com/doc/refman/5.1/...functions.html

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 07:45.