Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

MySql error: Incorrect datetime value

Estas en el tema de MySql error: Incorrect datetime value en el foro de Mysql en Foros del Web. Hola, estoy programando una aplicación en Visual Basic 6 para que gestione una base de datos MySql. El problema viene cuando intento insertar una variable ...
  #1 (permalink)  
Antiguo 19/03/2010, 01:50
 
Fecha de Ingreso: marzo-2007
Mensajes: 58
Antigüedad: 17 años, 1 mes
Puntos: 0
MySql error: Incorrect datetime value

Hola, estoy programando una aplicación en Visual Basic 6 para que gestione una base de datos MySql. El problema viene cuando intento insertar una variable de tipo date en una columna definida como DateTime en la base de datos de MySql. Me lanza este error:

[MySQL][ODBC 5.1 Driver][mysqld-5.1.44-community]Incorrect datetime value: '17/03/2010' for column 'FECHA_INGRESO' at row 1

Os dejo una porción del codigo de la función donde salta el error, a ver si veis lo que hago mal..

Código:
Dim fechaIngreso As Date ' (variable global)

Private Function database(FechaD As Date){

Dim midata As Date

midata = FechaD
fechaIngreso = Format(midata, "dd/mm/yyyy HH:mm")

sql = "INSERT INTO Ingreso (CODIGO_INGRESO,codigo_empresa,codigo_tienda,codigo_contador,codigo_entrada,fecha_ingreso,cantidad_ingreso,alarmas) VALUES ('" & CStr(MAXIM) & _
                                        "','" & CodigoEmpresa & "','" & codigoDenda & _
                                        "','" & codigoContador & "','" & codigoEntrada _
                                        & "','" & fechaIngreso & "','" & _
                                        Datos(K * 4 + 13) & _
                                        Datos(K * 4 + 14) & _
                                        Datos(K * 4 + 15) & _
                                        "','" & Datos(K * 4 + 12) & "')"

}
un saludo y gracias
  #2 (permalink)  
Antiguo 19/03/2010, 03:50
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: MySql error: Incorrect datetime value

El formato de un DATETIME en mysql es aaaa-mm-dd hh:mm:ss y se manipula con delimitadores ' ' o " " como si fuera un texto.

Si vb le manda esto 17/03/2010 seguramente no se entera....

Transforma la fecha para adaptarla al formato de Mysql y listos...

Quim
  #3 (permalink)  
Antiguo 19/03/2010, 06:12
 
Fecha de Ingreso: marzo-2007
Mensajes: 58
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: MySql error: Incorrect datetime value

Gracias Quim,

intento aplicar el formato que me has dicho con la función format:

fechaIngreso = Format(midata, "yyyy/mm/dd HH:mm:ss")

pero no sé por qué no me lo cambia, fechaIngreso sigue siendo 17/03/2010 en vez de 2010/03/17

De todas formas parece que funciona si le paso a MySql la fecha en formato de string:

Código:
FechaIngresoString = Year(fechaIngreso) & "/" & Month(fechaIngreso) & "/" & Day(fechaIngreso) & " " & Hour(fechaIngreso) & ":" & Minute(fechaIngreso) & ":" & Second(fechaIngreso)

sql = "INSERT INTO Ingreso (CODIGO_INGRESO,codigo_empresa,codigo_tienda,codigo_contador,codigo_entrada,fecha_ingreso,cantidad_ingreso,alarmas) VALUES ('" & CStr(MAXIM) & _
                                        "','" & CodigoEmpresa & "','" & codigoDenda & _
                                        "','" & codigoContador & "','" & codigoEntrada _
                                        & "','" & FechaIngresoString & "','" & _
                                        Datos(K * 4 + 13) & _
                                        Datos(K * 4 + 14) & _
                                        Datos(K * 4 + 15) & _
                                        "','" & Datos(K * 4 + 12) & "')"
Hay algún problema con hacerlo asi?

mersi
  #4 (permalink)  
Antiguo 19/03/2010, 06:19
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, 4 meses
Puntos: 2658
Respuesta: MySql error: Incorrect datetime value

Cuatro consejos:
1) Si estás usando VB.Net, mejor usa el MySQL Connector.Net que es más eficiente, y te permite usar tipos nativos de dato.
2) Si vas a usar sentencias únicas de SQL creadas dinámicamente, mejor usalas por medio de parámetros. De esa forma le dejas al conector que resuelva la conversión.
3) Si vas a hacerlo a mano, no te olvides que el separador de fechas es "-" y no "/" en MySQL. Puede eventualmente traerte problemas.
4) Si aún así quieres hacerlo a mano, usa el método ToString de la clase DateTime en VB. Es más simple: variableDateTime.ToString("yyyy/MM/dd HH:mm:ss")
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: datetime
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




La zona horaria es GMT -6. Ahora son las 17:51.