Ver Mensaje Individual
  #10 (permalink)  
Antiguo 01/10/2014, 11:06
Avatar de gnzsoloyo
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, 5 meses
Puntos: 2658
Respuesta: Usar un trigger para cambiar el formato fecha

Mira, la solución más simple de implementar que yo le veo es que no insertes los datos directamente en la tabla de consulta, sino que uses una tabla intermedia donde, donde el campo se mantenga como VARCHAR. Luego, por medio de un SP, procesas el contenido formateando los datos correctamente e insertando los marcados como DATETIME en su tabla final.
Todo ese proceso puede ser automatizable, y t evitarás en forma definitiva problemas con los datos de fecha, sin necesidad de andar haciendo cosas imposibles.
En cuanto a ponerlo como trigger, hay un problema para tu idea: Un trigger tiene como datos de entrada / salida un registro virtual (digamos que está en un estado transitorio en memoria), pero ese registro virtual contiene los mismos campos que las columnas de la tabla en la que corre el trigger, y por consecuencia sus tipos de datos se corresponden a la tabla.
Esto significa que no puedes crear un campo DATETIME, donde quieras que la conversión de "dd/mm/aaaa" genere un "aaaa-mm-dd", porque al momento de ejecutarse el dato se habrá corrupto de la misma forma.
¿Se entiende el problema?
Entonces tienes pocas alternativas:
1) Parchar todas y cada una de las consultas que realizas a la tabla que hoy usas, para insertarle en cada llamada de esa columna un STR_TO_DATE(), ya sea en el SELECT o en el WHERE, y en cualquier operación realizada en SQL. Esto se pagará con performance.
2) Crear una tabla transaccional donde deposites el resultado de los inserts y luego proceses para volcar los datos a la tabla final, realizando las conversiones necesarias. Esto no te afectará mucho la performance porque el volcado se puede hacer masivo y con eso obtendrías alta performance.

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