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

Fecha desde campo Varchar a campo datetime con insert

Estas en el tema de Fecha desde campo Varchar a campo datetime con insert en el foro de Mysql en Foros del Web. Buenas, Teno una tabla con campos varchar que he creado a partir de un TXT. Luego tengo que mover los datos de esa tabla a ...
  #1 (permalink)  
Antiguo 25/05/2009, 18:32
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Fecha desde campo Varchar a campo datetime con insert

Buenas,

Teno una tabla con campos varchar que he creado a partir de un TXT.

Luego tengo que mover los datos de esa tabla a otra, dandoles formato a los numeros y fechas, pues bien, las fechas están en formato 25-05-2009 10:50

no logro pasarlo a la nueva tabla de ninguna manera, he probado asi:
(en la consulta hay mas campos, esto es un ejemplo)

Insert into TBLNUEVA (CAMPOFECHA2)
SELECT (DATE_FORMAT('CAMPOFECHA1', '%Y-%m-&d') )FROM TBLVIEJA;

Insert into TBLNUEVA (CAMPOFECHA2)
SELECT (LEFT(CAMPOFECHA1,10 ) )FROM TBLVIEJA;

Insert into TBLNUEVA (CAMPOFECHA2)
SELECT (STR_TO_DATE('CAMPOFECHA1', '%Y-%m-&d') )FROM TBLVIEJA;

Alguna idea?
  #2 (permalink)  
Antiguo 25/05/2009, 18:39
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 2 meses
Puntos: 45
Respuesta: Fecha desde campo Varchar a campo datetime con insert

Hola
Prueba esto

Código sql:
Ver original
  1. INSERT INTO TBLNUEVA (CAMPOFECHA2)
  2. SELECT (STR_TO_DATE('CAMPOFECHA1', '%d-%m-%Y') )FROM TBLVIEJA;
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #3 (permalink)  
Antiguo 25/05/2009, 18:41
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Fecha desde campo Varchar a campo datetime con insert

Que diferencia hay entre

Insert into TBLNUEVA (CAMPOFECHA2)
SELECT (STR_TO_DATE('CAMPOFECHA1', '%Y-%m-&d') )FROM TBLVIEJA;

y esto que me pones

INSERT INTO TBLNUEVA (CAMPOFECHA2)
SELECT (STR_TO_DATE('CAMPOFECHA1', '%Y-%m-&d') )FROM TBLVIEJA;

Solo veo el &d de la fecha

Voy a probar
Salu2
  #4 (permalink)  
Antiguo 25/05/2009, 18:44
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Fecha desde campo Varchar a campo datetime con insert

Pues nada, sigue con la misma:

Incorrect datetime value: 'FX_PRESENCIAL' for function str_to_date


Me estoy liando... se me pegan los ojos ya,

juraria que hace un momento habia visto otra cosa y no esta: '%d-%m-%Y' en tu post... jejeje
  #5 (permalink)  
Antiguo 25/05/2009, 18:57
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Fecha desde campo Varchar a campo datetime con insert

Nada no hay forma... ni el str_to_date y el date_format

no se que hago mal
  #6 (permalink)  
Antiguo 25/05/2009, 19:42
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Fecha desde campo Varchar a campo datetime con insert

En que formato tienes las fechas en el campo varchar?

Puedes poner algunos registros de tus tablas?
cual es el error?
Que operación te ejecuta mal?

un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Última edición por huesos52; 25/05/2009 a las 20:33
  #7 (permalink)  
Antiguo 26/05/2009, 01:52
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Fecha desde campo Varchar a campo datetime con insert

El formato del dato en el campo varchar es:

2009-05-25 19:00

Y-m-d H:m

Cuando hago el insert me dice que valor incorrecto de fecha
  #8 (permalink)  
Antiguo 26/05/2009, 05:25
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Fecha desde campo Varchar a campo datetime con insert

Prueba esto:

Código mysql:
Ver original
  1. INSERT INTO TBLNUEVA (CAMPOFECHA2)
  2. SELECT (str_to_date(CAMPOFECHA1, '%Y-%m-&d %H:%i') )FROM TBLVIEJA;

o

Código mysql:
Ver original
  1. INSERT INTO TBLNUEVA (CAMPOFECHA2)
  2. SELECT CAMPOFECHA1 FROM TBLVIEJA;

Nos cuentas como te va.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #9 (permalink)  
Antiguo 26/05/2009, 06:19
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Fecha desde campo Varchar a campo datetime con insert

Ya he hecho las pruebas, este es el resultado:


INSERT INTO TBLNUEVA (CAMPOFECHA2)SELECT (STR_TO_DATE(CAMPOFECHA1, '%Y-%m-&d %H:%i') )FROM TBLVIEJA;

Mensaje d eerror: Incorrect datetime value: 'CAMPOFECHA1' for function str_to_date


INSERT INTO TBLNUEVA (CAMPOFECHA2)SELECT CAMPOFECHA1 FROM TBLVIEJA;

Mensaje de error: Incorrect date value: '20/02/2001 19:00:00' for column 'CAMPOFECHA1'


Hay que tener en cuenta que en la TBLVIEJA el CAMPOFECHA1 es de tipo VARCHAR
  #10 (permalink)  
Antiguo 26/05/2009, 06:35
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Fecha desde campo Varchar a campo datetime con insert

La verdad no creo que tu formato sea Y-m-d H:i

Mira el error que te saca:

Cita:
Mensaje de error: Incorrect date value: '20/02/2001 19:00:00' for column 'CAMPOFECHA1'
haz un:
desc tblvieja;
y un
select campofecha1 from tblvieja limit 5;
y un
desc tblnueva;

Y pegalos aca.

Con esa información te podemos ayudar.

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #11 (permalink)  
Antiguo 26/05/2009, 06:45
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Fecha desde campo Varchar a campo datetime con insert

Bueno pues aqui teneis, la tabla con la que estoy trabajando, lo anterior eran ejemplos:

************************************************** *ESTA ES LA TABLA DE ORIGENL (TBLVIEJA EN EL EJEMPLO ANTERIOR)
ESTA TABLA ES TODO VARCHAR POR QUE LO HE IMPORTADO DE UN TXT CON LOAD_DATA_INFILE

mysql> desc tablatemporal;
+-----------------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------------+--------------+------+-----+---------+-------+
| NU_BOLETIN | varchar(50) | YES | | NULL | |
| USUARIO_PEDIDO | varchar(50) | YES | | NULL | |
| REFERENCIA_PEDIDO | varchar(50) | YES | | NULL | |
| PRESENCIAL | varchar(50) | YES | | NULL | |
| FX_PRESENCIAL | varchar(50) | YES | | NULL | |
| NO_PERMANENCIA | varchar(50) | YES | | NULL | |
| ESTADO_SOLUCION | varchar(50) | YES | | NULL | |
| N_LINEA | varchar(50) | YES | | NULL | |
| CO_GRUPO | varchar(50) | YES | | NULL | |
| NO_GRUPO | varchar(50) | YES | | NULL | |
| CO_EMPRESA | varchar(50) | YES | | NULL | |
| NO_EMPRESA | varchar(50) | YES | | NULL | |
| CO_TIENDA | varchar(50) | YES | | NULL | |
| NO_TIENDA | varchar(50) | YES | | NULL | |
| CO_MATRICULA | varchar(50) | YES | | NULL | |
| DS_PERFIL | varchar(50) | YES | | NULL | |
| FX_ALTA_BOLETIN | varchar(50) | YES | | NULL | |
| CO_TIPO_BOL | varchar(50) | YES | | NULL | |
| ESTADO_TQ_BOL | varchar(50) | YES | | NULL | |
| FX_ESTADO_TQ_BOL | varchar(50) | YES | | NULL | |
| ESTADO_HARPAGONDC_BOL | varchar(50) | YES | | NULL | |
| FX_ESTADO_HARPAGON_DC_BOL | varchar(50) | YES | | NULL | |
| ESTADO_LIQUIDACION | varchar(50) | YES | | NULL | |
| FX_ESTADO_LIQUIDACION | varchar(50) | YES | | NULL | |
| CO_LIQUIDACION | varchar(50) | YES | | NULL | |
| FX_LIQUIDACION | varchar(50) | YES | | NULL | |
| CA_COMISION_INICIAL_BOL | varchar(50) | YES | | NULL | |
| CA_COMISION_FINAL_BOL | varchar(50) | YES | | NULL | |
| NU_ABONO | varchar(50) | YES | | NULL | |
| NO_CLIENTE | varchar(100) | YES | | NULL | |
| CO_TIPO_DOC | varchar(50) | YES | | NULL | |
| NU_DOC_CLIENTE | varchar(50) | YES | | NULL | |
| NO_PROVINCIA_INSTALACION | varchar(50) | YES | | NULL | |
| CO_TERRITORIO | varchar(50) | YES | | NULL | |
| CO_SEGMENTO | varchar(50) | YES | | NULL | |
| CO_SUBSEGMENTO | varchar(50) | YES | | NULL | |
| CO_AGRUPACION_DC | varchar(50) | YES | | NULL | |
| NO_AGRUPACION_DC | varchar(100) | YES | | NULL | |
| IN_ESTADO_AGRUPACION_DC | varchar(50) | YES | | NULL | |
| IN_OPERACION | varchar(50) | YES | | NULL | |
| CA_UNIDADES | varchar(50) | YES | | NULL | |
| CA_VALORACION_LINEA_INICIAL | varchar(50) | YES | | NULL | |
| CA_VALORACION_LINEA_FINAL | varchar(50) | YES | | NULL | |
| CA_VALORACION_AGRU_DC | varchar(50) | YES | | NULL | |
| CA_COMISION_LINEA_INICIAL | varchar(50) | YES | | NULL | |
| CA_COMISION_LINEA_FINAL | varchar(50) | YES | | NULL | |
| IN_SENIALIZADO | varchar(50) | YES | | NULL | |
| CA_COMISION_PREVISTA | varchar(50) | YES | | NULL | |
| CO_REGULARIZACION | varchar(50) | YES | | NULL | |
| FX_REGULARIZACION | varchar(50) | YES | | NULL | |
+-----------------------------+--------------+------+-----+---------+-------+
50 rows in set (0.00 sec)


********************************************* ESTE ES EL CAMPO DEL PROBLEMA, AL IGUAL QUE TODOS LOS QUE EMPIEZAN POR FX

mysql> select fx_presencial from tablatemporal limit 5;
+---------------------+
| fx_presencial |
+---------------------+
| 20/02/2001 19:00:00 |
| 20/02/2001 19:00:00 |
| 20/02/2001 19:00:00 |
| 20/02/2001 19:00:00 |
| 20/02/2001 19:00:00 |
+---------------------+
5 rows in set (0.00 sec)



************************************************** *ESTA ES LA TABLA DE DESTINO (TBLNUEVA EN EL EJEMPLO ANTERIOR)

mysql> desc tblfiltro;
+-----------------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------------+--------------+------+-----+---------+-------+
| BOLETIN | int(10) | NO | MUL | NULL | |
| PRESENCIAL | varchar(50) | YES | | NULL | |
| FX_PRESENCIAL | date | YES | | NULL | |
| NO_PERMANENCIA | varchar(100) | YES | | NULL | |
| CO_EMPRESA | int(10) | NO | | NULL | |
| CO_TIENDA | int(10) | NO | | NULL | |
| FX_ALTA | date | YES | | NULL | |
| CO_TIPO_BOL | varchar(4) | YES | | NULL | |
| ESTADO_TQ_BOL | varchar(4) | YES | | NULL | |
| FX_ESTADO_TQ_BOL | date | YES | | NULL | |
| ESTADO_HARPAGONDC_BOL | varchar(4) | YES | | NULL | |
| FX_ESTHARP | date | YES | | NULL | |
| ESTADO_LIQUIDACION | varchar(20) | YES | | NULL | |
| FX_ESTADO_LIQUIDACION | date | YES | | NULL | |
| CO_LIQUIDACION | int(10) | YES | | NULL | |
| FX_LIQUIDACION | date | YES | | NULL | |
| CA_COMISION_INICIAL_BOL | double(15,5) | YES | | NULL | |
| CA_COMISION_FINAL_BOL | double(15,5) | YES | | NULL | |
| NU_ABONO | varchar(20) | YES | | NULL | |
| NO_CLIENTE | varchar(150) | YES | | NULL | |
| NU_DOC_CLIENTE | varchar(50) | YES | | NULL | |
| NO_PROVINCIA_INSTALACION | varchar(50) | YES | | NULL | |
| CO_TERRITORIO | varchar(4) | YES | | NULL | |
| CO_SEGMENTO | varchar(4) | YES | | NULL | |
| CO_SUBSEGMENTO | varchar(4) | YES | | NULL | |
| CO_AGRUPACION_DC | int(20) | YES | | NULL | |
| NO_AGRUPACION_DC | varchar(100) | YES | | NULL | |
| IN_ESTADO_AGRUPACION_DC | varchar(4) | YES | | NULL | |
| IN_OPERACION | varchar(4) | YES | | NULL | |
| CA_UNIDADES | int(10) | YES | | NULL | |
| CA_VALORACION_LINEA_INICIAL | double(15,5) | YES | | NULL | |
| CA_VALORACION_LINEA_FINAL | double(15,5) | YES | | NULL | |
| CA_VALORACION_AGRU_DC | double(15,5) | YES | | NULL | |
| CA_COMISION_LINEA_INICIAL | double(15,5) | YES | | NULL | |
| CA_COMISION_LINEA_FINAL | double(15,5) | YES | | NULL | |
| IN_SENIALIZADO | int(4) | YES | | NULL | |
| CA_COMISION_PREVISTA | double(15,5) | YES | | NULL | |
| CO_REGULARIZACION | int(10) | YES | | NULL | |
| FX_REGULARIZACION | date | YES | | NULL | |
+-----------------------------+--------------+------+-----+---------+-------+
39 rows in set (0.02 sec)
  #12 (permalink)  
Antiguo 26/05/2009, 06:48
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: Fecha desde campo Varchar a campo datetime con insert

Lo que puede que esté resultando mal es que el formato de conversión se refiere no a como tiene que quedar sino a cómo está entrando.
Sea el caso :
Si el formato de entrada es "dd/mm/yyyy HH:MM:ss", entonces lo que hay que indicar es que ese es el formato de ingreso:
Código sql:
Ver original
  1. SELECT STR_TO_DATE('20/02/2001 19:00:00','%d/%m/%Y %T') FECHA;
En el caso en que las horas lleguen sin segundos:
Código sql:
Ver original
  1. SELECT STR_TO_DATE('20/02/2001 19:20','%d/%m/%Y %H:%i') FECHA;

En ningún caso se debe olvidar poner los caracteres y/o espacios que separan los números, porque sino devolverá NULL.

Entonces, si el valor está entrando así:
Cita:
'20/02/2001 19:20:00'
Se debe poner:
Código sql:
Ver original
  1. INSERT INTO TblNueva (CAMPOFECHA2) SELECT (STR_TO_DATE(CAMPOFECHA1, '%d/%m/%Y %H:%i:%s') )
  2. FROM TblVieja;

No perder de perspectiva que lo que hace STR_TO_DATE() es devolver un DATETIME no una cadena, en formato de 8 bytes, por lo que se manipula a partir de allí como un valor DATETIME común...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 26/05/2009, 06:53
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Fecha desde campo Varchar a campo datetime con insert

entonces si primero hago el STR_TO_DATE, transformo la cadena en DATETIME, ya solo queda cambiar el formato del datetime

algo así valdría?:

DATE_FORMAT (STR_TO_DATE('CAMPOFECHA1','%d/%m/%Y %H:%m'))



Salu2
  #14 (permalink)  
Antiguo 26/05/2009, 07:11
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Fecha desde campo Varchar a campo datetime con insert

Haz exactamente como dice gnzsoloyo.

En pocas palabras, cuando haces un str_to_date, lo que haces, es permitir la entrada de un formato no recibido por mysql, pero transformado internamente por la función str_to_date para ingresarlo como se debe.

Cita:
INSERT INTO TblNueva (CAMPOFECHA2) SELECT (STR_TO_DATE(CAMPOFECHA1, '%d/%m/%Y %H:%i:%s') )
FROM TblVieja;
Así debe quedar.

Al hacer esto, internamente será insertada la fecha en formato Y-m-d HH:MM:ss

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #15 (permalink)  
Antiguo 26/05/2009, 07:31
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: Fecha desde campo Varchar a campo datetime con insert

Cita:
Iniciado por ejconan Ver Mensaje
entonces si primero hago el STR_TO_DATE, transformo la cadena en DATETIME, ya solo queda cambiar el formato del datetime

algo así valdría?:

DATE_FORMAT (STR_TO_DATE('CAMPOFECHA1','%d/%m/%Y %H:%m'))



Salu2
Si vas a ingresar el dato en un campo DATETIME, y STR_TO_DATE() te devuelve un DATETIME, ¿para qué quieres cambiarle el formato? No tiene ninguna utilidad. El valor ya es el que el campo debe recibir...

Ahora bien, si lo quieres guardar en un campo CHAR o VARCHAR, si tendría "algo" de sentido.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #16 (permalink)  
Antiguo 26/05/2009, 08:00
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Fecha desde campo Varchar a campo datetime con insert

Lo decía porque lo que me devuelve el str_to_date es en formato d/m/Y y mysql utiliza Y/m/d

Ahora pruebo a ver y os cuento
  #17 (permalink)  
Antiguo 26/05/2009, 08:02
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: Fecha desde campo Varchar a campo datetime con insert

Cita:
Iniciado por ejconan Ver Mensaje
Lo decía porque lo que me devuelve el str_to_date es en formato d/m/Y y mysql utiliza Y/m/d

Ahora pruebo a ver y os cuento
Cuando se ejecuta STR_TO_DATE ya queda en formato "yyyy-MM-dd HH:mm:ss", porque está en el formato interno de DATETIME en MySQL.
Eso es lo que te estamos aclarando. No confundas la cadena con el DATETIME...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #18 (permalink)  
Antiguo 26/05/2009, 08:12
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Fecha desde campo Varchar a campo datetime con insert

Otra cosa ejconan...
Deberías considerar cambiar el tipo de dato del atributo FX_PRESENCIAL de date a datetime.
Aunque no te genere error, solo guardará la fecha y no la hora como lo necesitas.

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #19 (permalink)  
Antiguo 26/05/2009, 08:19
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Fecha desde campo Varchar a campo datetime con insert

Wenas,

Me sigue dando error: Incorrect datetime value: 'FX_PRESENCIAL' for function str_to_date


El unico dato que necesito es la fecha, la hora no me vale para nada. Luego seguiré que ahora me tengo que ir.

Lo haré nuevo detenidamente y os cuento vale??

Muchisimas gracias
  #20 (permalink)  
Antiguo 26/05/2009, 08:32
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Fecha desde campo Varchar a campo datetime con insert

Mira te dejo todo el procedimiento con tu ejemplo.
Espero te sirva.

Código mysql:
Ver original
  1. mysql> create table tablatemporal(fx_presencial varchar(50));
  2. Query OK, 0 rows affected (0.02 sec)
  3.  
  4. mysql> insert into tablatemporal values('20/02/2001 19:00:00'
  5.     -> );
  6. Query OK, 1 row affected (0.00 sec)
  7.  
  8. mysql> insert into tablatemporal values('20/02/2001 19:00:00');
  9. Query OK, 1 row affected (0.00 sec)
  10.  
  11. mysql> insert into tablatemporal values('20/02/2001 19:00:00');
  12. Query OK, 1 row affected (0.01 sec)
  13.  
  14. mysql> insert into tablatemporal values('20/02/2001 19:00:00');
  15. Query OK, 1 row affected (0.00 sec)
  16.  
  17. mysql> insert into tablatemporal values('20/02/2001 19:00:00');
  18. Query OK, 1 row affected (0.00 sec)
  19.  
  20. mysql> select *from tablatemporal;
  21. +---------------------+
  22. | fx_presencial       |
  23. +---------------------+
  24. | 20/02/2001 19:00:00 |
  25. | 20/02/2001 19:00:00 |
  26. | 20/02/2001 19:00:00 |
  27. | 20/02/2001 19:00:00 |
  28. | 20/02/2001 19:00:00 |
  29. +---------------------+
  30. 5 rows in set (0.00 sec)
  31.  
  32. mysql> create table tblfiltro(fx_presencial date);
  33. Query OK, 0 rows affected (0.00 sec)
  34.  
  35. mysql> alter table tblfiltro modify fx_presencial datetime;
  36. Query OK, 0 rows affected (0.01 sec)
  37. Records: 0  Duplicates: 0  Warnings: 0
  38.  
  39. mysql> insert into tblfiltro select str_to_date(fx_presencial,'%d/%m/%Y %H:%i:%s') from tablatemporal;
  40. Query OK, 5 rows affected (0.01 sec)
  41. Records: 5  Duplicates: 0  Warnings: 0
  42.  
  43. mysql> select *from tblfiltro;
  44. +---------------------+
  45. | fx_presencial       |
  46. +---------------------+
  47. | 2001-02-20 19:00:00 |
  48. | 2001-02-20 19:00:00 |
  49. | 2001-02-20 19:00:00 |
  50. | 2001-02-20 19:00:00 |
  51. | 2001-02-20 19:00:00 |
  52. +---------------------+
  53. 5 rows in set (0.00 sec)
  54.  
  55. mysql>

Con el alter table modifico el tipo de campo de date a datetime.

Creo que es lo que necesitas.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #21 (permalink)  
Antiguo 26/05/2009, 09:01
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Fecha desde campo Varchar a campo datetime con insert

joer huesos52 eres una maquina, gracias por tomarte tantas molestias, ya lo he hecho y sigue diciendo incorrect datetime value, algo mal tengo por ahí, voy a revisar todo de nuevo

Salu2
  #22 (permalink)  
Antiguo 26/05/2009, 09:06
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: Fecha desde campo Varchar a campo datetime con insert

Cita:
Iniciado por ejconan Ver Mensaje
Wenas,

Me sigue dando error: Incorrect datetime value: 'FX_PRESENCIAL' for function str_to_date


El unico dato que necesito es la fecha, la hora no me vale para nada. Luego seguiré que ahora me tengo que ir.

Lo haré nuevo detenidamente y os cuento vale??

Muchisimas gracias
Como tienes el mismo nombre de campo en ambas tablas, es un poco difícil saber en cuál se produce el problema. De todos modos, esto:
Cita:
Incorrect datetime value: 'FX_PRESENCIAL' for function str_to_date
parece indicar que hay un problema en el dato entrante a la función STR_TO_DATE, no a la tabla destino.
Si fuese la tabla destino, el que sea un DATE y no un DATETIME es irrelevante, porque MySQL "corta" el dato al formato correcto, esto es, suprime la hora.
Yo primero verificaría si en la tabla origen todos los strings tienen el formato correcto.
Para mas seguridad postea la sitaxis que estas usando. Es decir. COPIA lo que estás usando, no la transcribas (las transcripciones suelen esconder los errores).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #23 (permalink)  
Antiguo 26/05/2009, 09:06
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Fecha desde campo Varchar a campo datetime con insert

Funciona!!!

gracias a todos, ahora solo tengo que hacer lo mismo con las otras 4 o 5 campos de fechas y luego con los campos integer y con los double.

una cosa, cuando el campo FX_Presencial de la tabla de origen sea NULL que pasa?

voy a probar
  #24 (permalink)  
Antiguo 26/05/2009, 09:12
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: Fecha desde campo Varchar a campo datetime con insert

La aritmética de SQL es muy precisa: Toda operación aritmética, de cadena o relacional con NULL es igual a NULL. SIEMPRE.
Esto quiere decir que no importa cómo lo combines, cuando un campo sumado, multiplicado, dividido, restado o encadenado tiene NULL, el resultado es NULL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #25 (permalink)  
Antiguo 26/05/2009, 11:50
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Fecha desde campo Varchar a campo datetime con insert

Bueno pues las fechas ya están solucionadas, ahora los campos de numeros

Muchas gracias por la ayuda, voy a investigar sobre los numeros, si tengo alguna duda ya os preguntaré pero quiero sacarlo yo solito :)
  #26 (permalink)  
Antiguo 26/05/2009, 12:03
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Fecha desde campo Varchar a campo datetime con insert

Ale ya estamos liaos, los campos double van bien, pero tengo otro problema:

Campo CO_LIQUIDACION en tablatemporal es VARCHAR y está vacío
Le hago el insert a tblfiltro que es INTEGER y me dice que valor incorrecto,

¿no habiamos dicho que los null eran iguales para todos?
  #27 (permalink)  
Antiguo 26/05/2009, 12:15
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Fecha desde campo Varchar a campo datetime con insert

ejconan no confundas un valor null con un vacío.
Son dos cosas totalmente diferentes.

Si tienes valores vacíos yo los pasaría a null y posteriormente haría la operación.

Código mysql:
Ver original
  1. update tabla set campo = null where campo = '';

Pruebalo y nos cuentas.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #28 (permalink)  
Antiguo 26/05/2009, 12:46
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Fecha desde campo Varchar a campo datetime con insert

si huesos52, es que me he liado al escribir,

verás como la tablatemporal la genero con el loaddatainfile pues los valores vacios me les deja vacios, no como null, estoy buscando alguna propiedad de load data in file para que los vacios me los grabe como null y asi hacerlo todo de un plumazo, he encontrado esto:

WRITE EMPTY PLACEHOLDERS AS [EMPTY | NULL]

pero no funciona

seguiré buscando, sino pues hago el update que es lo que hice antes para probar

Salu2
  #29 (permalink)  
Antiguo 27/05/2009, 17:15
 
Fecha de Ingreso: mayo-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Fecha desde campo Varchar a campo datetime con insert

Buenas otra vez,

Nada, no encuentro mas documentacion sobre el Loaddatainfile, y eso que puse ayer (WRITE EMPTY PLACEHOLDERS AS [EMPTY | NULL]) no funciona, asi que lo haré con un update como dijimos ayer, aunque tenga que hacer 4 o 5 consultas mas, creo que no relentizaré mucho el proceso. Es que esto que estoy haciendo cuando termina todo lo que tiene que hacer habrá ejecutado unas 20 sqls diferentes, por eso pienso que cuanto menos mejor ¿no?

También tengo que mirar como hago un control de errores en asp, pero eso es otra historia
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 03:53.