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

pasar un campo varchar a date

Estas en el tema de pasar un campo varchar a date en el foro de Mysql en Foros del Web. holas buenas, les cuento tengo una tabla que me pasaron con varios campos entre ellos la fecha pero los muy pajaros la crearon tipo varchar ...
  #1 (permalink)  
Antiguo 12/11/2009, 15:31
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
pasar un campo varchar a date

holas buenas, les cuento tengo una tabla que me pasaron con varios campos entre ellos la fecha pero los muy pajaros la crearon tipo varchar 10 para ingresarla en español : DD/MM/AAAA
dia mes año entonces ahora quieren hacerle consultas a la fecha, pero al transformar directamete a date el campo lo pone en 0 por no estar bien estructurado : AAAA/MM/DD como debería ser, entonce me pregunto y creo que se puede hacer es como actualizo cada campo de español a ingles, si esto requiere crearse un campo extra donde actualizare los datos viejos a los nuevos no hay problema, el problema me viene de como hago el update ya que no tienen ID's :/
alguna sugerencia.
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #2 (permalink)  
Antiguo 12/11/2009, 15:38
Avatar de Gmod  
Fecha de Ingreso: marzo-2008
Mensajes: 20
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: pasar un campo varchar a date

Los registros no tienen ID? wow

yo crearia un script en php que recoriera todos los registros, tomara el campo actual y mediante explode lo dejara como un array y despues cambiando los indices ( [1] por [0] y al revez) los ingresara en el nuevo campo date
  #3 (permalink)  
Antiguo 12/11/2009, 15:40
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: pasar un campo varchar a date

que tal kaninox

primero hay que cambiar los datos al formato de mysql (yyyy-mm-dd) siendo la columna varchar (Esto se hace con la función str_to_date).
Posteriormente, hacer un alter table del campo para que no lo convierta a cero (0)

ejemplo:
Código mysql:
Ver original
  1. mysql> desc conv_fechas;
  2. +-------+-------------+------+-----+---------+-------+
  3. | Field | Type        | Null | Key | Default | Extra |
  4. +-------+-------------+------+-----+---------+-------+
  5. | fecha | varchar(10) | YES  |     | NULL    |       |
  6. +-------+-------------+------+-----+---------+-------+
  7. 1 row in set (0.05 sec)
  8.  
  9. mysql> select *from conv_fechas;
  10. +------------+
  11. | fecha      |
  12. +------------+
  13. | 12/11/2009 |
  14. +------------+
  15. 1 row in set (0.00 sec)
  16.  
  17. mysql> update conv_fechas set fecha=str_to_date(fecha,'%d/%m/%Y');
  18. Query OK, 1 row affected (0.00 sec)
  19. Rows matched: 1  Changed: 1  Warnings: 0
  20.  
  21. mysql> select *from conv_fechas;
  22. +------------+
  23. | fecha      |
  24. +------------+
  25. | 2009-11-12 |
  26. +------------+
  27. 1 row in set (0.00 sec)
  28.  
  29. mysql> alter table conv_fechas modify fecha date;
  30. Query OK, 1 row affected (0.06 sec)
  31. Records: 1  Duplicates: 0  Warnings: 0
  32.  
  33. mysql> select *from conv_fechas;
  34. +------------+
  35. | fecha      |
  36. +------------+
  37. | 2009-11-12 |
  38. +------------+
  39. 1 row in set (0.00 sec)
  40.  
  41. mysql> desc conv_fechas;
  42. +-------+------+------+-----+---------+-------+
  43. | Field | Type | Null | Key | Default | Extra |
  44. +-------+------+------+-----+---------+-------+
  45. | fecha | date | YES  |     | NULL    |       |
  46. +-------+------+------+-----+---------+-------+
  47. 1 row in set (0.00 sec)
  48.  
  49. mysql>


saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #4 (permalink)  
Antiguo 12/11/2009, 15:43
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: pasar un campo varchar a date

directamente desde la base de datos y con una sola consulta, tras crear un campo de paso:
creas un campo nuevo del tipo DATE, y luego haces la actualización mediante
UPDATE tabla SET camponuevo = STR_TO_DATE(campoviejo, '%d/%m/%Y')
y compruebas si las fechas están bien. Luego podrás hacer las consultas, y por supuesto eliminar el campo antiguo, pero no sin antes asegurarte de que todo está bien.

Llegó antes huesos52.
  #5 (permalink)  
Antiguo 13/11/2009, 07:12
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Respuesta: pasar un campo varchar a date

yes me resulto perfecto les dejo karma ;)
__________________
Gokuh Salvo al mundo. PUNTO!!!!
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 15:29.