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 originalSELECT 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 originalSELECT 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í:
Se debe poner:
Código sql:
Ver originalINSERT INTO TblNueva (CAMPOFECHA2) SELECT (STR_TO_DATE(CAMPOFECHA1, '%d/%m/%Y %H:%i:%s') )
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...