Ver Mensaje Individual
  #4 (permalink)  
Antiguo 31/12/2010, 16:39
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.323
Antigüedad: 12 años, 4 meses
Puntos: 2655
Respuesta: Combinar 2 campos?

Cita:
el problema es que mi base de datos ya tiene como medio año funcionando y los registros se han ido guardando de esa manera, por lo que seria mucho trabajo crear un campo tipo DATE y actualizar los registros uno por uno... por eso buscaba la forma al menos de unir los campos mencionados: diainicio con dia y que sean un solo campo (campo dia). De igual manera con los de Mes.
En realidad, no. Solamente requiere tres sentencias:
Código MySQL:
Ver original
  1. ALTER TABLE tabla
  2.     ADD COLUMN fecha DATE,
  3.     ADD COUMN fecha_inicio DATE;
  4.  
  5. UPDATE tabla
  6.     SET fecha = DATE(CONCAT(anio,  '-', mes,  '-', dia)),
  7.     fecha_inicio=DATE(CONCAT(anioinicio, '-', mesinicio,  '-', diainicio));
  8.  
  9.     DROP COLUMN anio,
  10.     DROP COLUMN mes,
  11.     DROP COLUMN dia,
  12.     DROP COLUMN anioinicio,
  13.     DROP COLUMN mesinicio,
  14.     DROP COLUMN diainicio;

Tal modificación posiblemente te simplifique todas las consultas de tiempo que hagas en el futuro, mientras que de hacerlas como las tienes ahora lo único que lograrás es complicarte la vida corrigiendo sintaxis y lógica cada vez que tengas que crear una.
El problema de realizar esta modificación es que deberás revisar todas las consultas ya desarrolladas.

Esta es la razón por la cual mis profesores decían siempre en las primeras clases de bases de datos que "una base debe estar bien diseñada desde el principio. Diseñarla mal implica muchos problemas en el futuro, porque parchar una base en trabajo implica un enorme esfuerzo y muchos problemas".

Siempre recuerdo ese consejo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)