select concat_ws('19',substring(elect,7,2),' ',substring(elect,9,2))
from enero2015
select concat('19',substring(elect,7,2),'-',substring(elect,9,2),'-',substring(elect,11,2)) from enero2015
Creo que en vez de '19' deberías poner algo así:
CASE WHEN Cast(substring(elect,7,2) As Int) > 30 THEN '19' ELSE '20' END
No tengo instalado MySql, así que considera el código como una idea, puede haber algunos errores.
set @a = 'XXSCTR62091528M100';
select
concat('19',concat_ws('-',substring(@a,7,2),substring(@a,9,2),substring(@a,11,2))) as dato
, STR_TO_DATE(concat('19',concat_ws('-',substring(@a,7,2),substring(@a,9,2),substring(@a,11,2))),'%Y-%m-%d') as fecha
, YEAR(CURDATE())-YEAR(STR_TO_DATE(concat('19',concat_ws('-',substring(@a,7,2),substring(@a,9,2),substring(@a,11,2))),'%Y-%m-%d'))
+ IF(DATE_FORMAT(CURDATE(),'%m-%d') > DATE_FORMAT(STR_TO_DATE(concat('19',concat_ws('-',substring(@a,7,2),substring(@a,9,2),substring(@a,11,2))),'%Y-%m-%d'),'%m-%d'), 0, -1) as edad
Pregunto tu ingresas los datos de la fecha dividido en tres partes? Es decir ingresas el dia en un campo, el mes en otro campo y el año en otro campo, si es asi que mal el diseño de tu tabla y peor darle solo el ingreso al año dos digitos por eso es importante hacer un buen analisis de la forma de como se ingresaran los datos, estructurar bien las tablas y asi evitar dolores de cabezas.
Gracias por el ejemplo, y por ahora no debo preocuparme por el 19 0 2000