PHP - Formato Fecha CSV Mysql

 
Vista:

Formato Fecha CSV Mysql

Publicado por Roberto robherblanc@outlook.com (27 intervenciones) el 12/05/2019 00:32:24
Hola. Estoy intentando insertar registros en mysql a partir de un csv donde uno de los campos es de tipo fecha y formato "d/m/Y" ej. "01/10/2014".
En mi bd mysql el campo FECHA_BAJA donde quiero hacer el insert es de tipo Date y como valor predeterminado nulo.
El problema es que siempre me aparece un error en mysql en el campo FECHA_BAJA.
Formateo la fecha pero da igual. Estoy utilizando por ejemplo $fecha_formateada = date("Y-m-d",strtotime($baja));
Tambien he probado a cambiar en mi mysql el campo FECHA_BAJAa tipo varchar a ver que me guardaba y me guardaba solo años y no tenia nada que ver con los años de la fecha ademas. No lo entiendo muy bien. No sé igual el problema esta en la exportacion de ese campo a csv. Igual tiene que venir ya formateado de alguna manera pq la verdad es que parece una cosa sencilla pero veo que me está dando muchos problemas.
El último error era algo así.
Codigo .:3database error: Incorrect date value:'2003' for column 'FECHA_BAJA' at row 1
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Mauro
Val: 933
Bronce
Ha aumentado su posición en 7 puestos en PHP (en relación al último mes)
Gráfica de PHP

Formato Fecha CSV Mysql

Publicado por Mauro (244 intervenciones) el 13/05/2019 04:05:39
El problema parece estar en el dato que levantas del CSV... ¿podrías pegar un par de líneas del archivo para verlas?

También ayudará ver cómo lees el archivo y accedes al campo fecha
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Formato Fecha CSV Mysql

Publicado por ROBERTO (27 intervenciones) el 15/05/2019 10:40:58
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$archivo = fopen("socios.csv","r");
While (($datos = fgetcsv($archivo, 1000, ";")) = true) {
 
   $codigo = $datos[0];
   .
   .
   .
   .
   $fecha = $datos[9];
 
   $caracteres = strlen($baja);
 
   if ($caracteres == 10){
 
       $strFecha = date_format($fecha,"Y-m-d");
 
  }else{
        $strFecha = "Null";
  }
 
 
    $sql  =  "INSERT INTO SOCIOS (CODIGO .......... FECHA) VALUES('$codigo',.............$strFecha)";
    $result = mysqli_query($conectando,$sql) or die ("database error: ".mysqli_error($conectando);
}
fclose($archivo);




***** El campo FECHA EN la base de datos es de tipo date ********************
***** La columna de fecha en el csv está formateada como fecha ej. 01/01/2019.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de italo_pm
Val: 1.014
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Formato Fecha CSV Mysql

Publicado por italo_pm (143 intervenciones) el 15/05/2019 16:17:02
hola, para formatear las fechas a mysql podrias utilizar esto como ejemplo:

1
2
3
4
5
6
7
8
9
<?php
 
$fecha = '09/04/2019'; //nueve de abril del 2019
$fecha = str_replace('/', '-', $fecha);
$fecha_mysql = date('Y-m-d', strtotime($fecha));
 
echo "La fecha formato mysql es: ".$fecha_mysql;
 
?>

salud2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauro
Val: 933
Bronce
Ha aumentado su posición en 7 puestos en PHP (en relación al último mes)
Gráfica de PHP

Formato Fecha CSV Mysql

Publicado por Mauro (244 intervenciones) el 15/05/2019 16:45:53
Ok, el tema debe estar en la línea:

1
date_format($fecha,"Y-m-d");

Fíjate que la función date_format es en realidad un alias a DateTime::format.

Lo que tienes que pasarle como parámetro es un objeto de tipo DateTime, lo que le estás pasando es un string.

Prueba creando un objeto a partir de tu string:

1
$fecha = DateTime::createFromFormat('d/m/Y', $datos[9] );
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Formato Fecha CSV Mysql

Publicado por ROBERTO (27 intervenciones) el 16/05/2019 01:34:36
Con esta funcion me da este error.
database error: you have an error in your sql syntax; check the manual that corresponds to yout mysql server version for de right syntax to use near "1" at line 1.

y con la primera opcion que me plantea italo_pm
$fecha = str_replace('/','-',$fecha);
$fecha_mysql = date('Y-m-d',strtotime($fecha));

arroja este error.
dateabase error: incorrect date value '2009' for column 'FECHA' at row 1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauro
Val: 933
Bronce
Ha aumentado su posición en 7 puestos en PHP (en relación al último mes)
Gráfica de PHP

Formato Fecha CSV Mysql

Publicado por Mauro (244 intervenciones) el 16/05/2019 14:59:58
Con esta funcion me da este error.
database error: you have an error in your sql syntax; check the manual that corresponds to yout mysql server version for de right syntax to use near "1" at line 1.


¿Podrías hacer que antes de ejecutar el SQL lo imprima por pantalla? De esa forma sabrás exactamente qué le estás enviando al MySQL y podremos entender mejor el error... A simple vista, lo que veo que puede fallar es que el $strFecha no está encomillado, deberías escribirlo así:

1
$sql  =  "INSERT INTO SOCIOS (CODIGO .......... FECHA) VALUES('$codigo',.............'$strFecha')";
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de italo_pm
Val: 1.014
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Formato Fecha CSV Mysql

Publicado por italo_pm (143 intervenciones) el 16/05/2019 17:22:40
Hola

el campo date en mysql es YYYY-MM-DD

al parecer el dato que tratas de insertar es distinto.

Realiza como te sugieren el echo o print de $datos[9]; para saber que contiene como fecha.

salud2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Formato Fecha CSV Mysql

Publicado por ROBERTO (27 intervenciones) el 17/05/2019 00:49:19
Al mostrarlo por pantalla me aparece :

2012-01-02

Curiosamente la primera fecha que aparece en mi csv es 01/02/2012 asi que el mes tampoco me lo formatea bien.

y al guardar en la bd me aparece el error

database error: incorrect date value : '2009' for column 'FECHA' at row 1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauro
Val: 933
Bronce
Ha aumentado su posición en 7 puestos en PHP (en relación al último mes)
Gráfica de PHP

Formato Fecha CSV Mysql

Publicado por Mauro (244 intervenciones) el 17/05/2019 17:12:40
Probá lo que te decía en mis respuestas anteriores:

1 - Fijate cómo se está construyendo la fecha a partir del CSV
2 - Imprimí por pantalla el SQL antes de ejecutarlo y probalo directo en la bd
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Formato Fecha CSV Mysql

Publicado por ROBERTO (27 intervenciones) el 17/05/2019 00:48:59
Al mostrarlo por pantalla me aparece :

2012-01-02

Curiosamente la primera fecha que aparece en mi csv es 01/02/2012 asi que el mes tampoco me lo formatea bien.

y al guardar en la bd me aparece el error

database error: incorrect date value : '2009' for column 'FECHA' at row 1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad