Calculo de la edad con fecha implícita
Para calcular la edad actual en MySQL a partir de otro campo como; la fecha de nacimiento, RFC o cualquier otro dato que lo contenga implícitamente, podemos utilizar algunas funciones.
MySQL utiliza diferentes tipos de datos para almacenar la información; 
		por lo que se debe revisar que tipo de dato es el utilizado para 
		almacenar la información y de ser necesario hacer la conversión.
		El tipo de dato DATE en MySQL sigue el siguiente formato AAAA-MM-DD, 
		por lo que si tiene otro orden, es necesario; reacomodar la fecha.
Para mostrar el proceso más claramente utilizare una tabla de ejemplo donde hay un campo que cuenta con la fecha implícita, en forma análoga al RFC, cuatro letras seguidas de 3 pares de números que indican el AA-MM-DD, y un par de caracteres al final.
| ID | cadena_fecha_implicita | algun_otro_dato | 
|---|---|---|
| int | varchar | varchar | 
| 1 | LARA901212SG | Estos datos | 
| 2 | LUIS950123QW | son ficticios | 
| 3 | IVAN650430ER | para el | 
| 4 | LORE120621P7 | ejemplo | 
| 5 | YULI090628YO | del calculo | 
| 6 | HOLA001011HI | de la edad | 
| 7 | ROJA88111145 | desde el | 
| 8 | AZUL990913S4 | RFC o CURP | 
		La tabla anterior tiene un campo con la fecha implícita que comienza a partir 
		del 5o carácter y tiene 6 dígitos, por lo que se puede extraer únicamente estos 
		caracteres (una subcadena de una cadena) con alguna de las funciones equivalentes 
		SUBSTR(), MID() o SUBSTRING(),
		indicando el campo, la posición de inicio y la cantidad de caracteres a extraer.
		
		
			SELECT SUBSTRING(cadena_fecha_implicita,5,6) AS 'cadena de fecha' 
			FROM edad_implicita;
		
		
	
	Ahora con la función STR_TO_DATE() devuelve 
		una fecha con la cadena obtenida previamente y su formato de fecha
		basado en la combinación de ciertos valores.
		
		
			SELECT STR_TO_DATE(SUBSTRING(cadena_fecha_implicita,5,6),"%y %m %d") 
			AS 'cambiando el tipo de dato' 
			FROM edad_implicita;
		
		
		Cabe aclarar que esta función corrige el orden de la fecha al formato AAAA-MM-DD,
		correspondiente al tipo DATE de MySQL de la cadena de texto indicada. Además debe 
		considerar el formato de 
		
			fecha corta para el año, 
		por ejemplo 65 es interpretado como:	2065 en vez de 1965.
	
	Por otra parte la función CURRENT_DATE() o CURDATE() devuelve la fecha actual.
			
			SELECT CURDATE();
		
		
		Recuerde que el formato de salida es AAAA-MM-DD, por lo que para poder realizar
		operaciones entre fechas deben tener el mismo tipo. Si desea mostrar un formato 
		de salida diferente puede utilizar la función 
		DATE_FORMAT("DATE","valores de formato"), 
		indicando la fecha, seguido de la combinación de  valores de formato .
	
	La función TIMESTAMPDIFF() devuelve la diferencia entre dos fechas o fechas-hora, indicando como parámetro la unidad de tiempo a devolver (YEAR, MONTH, MINUTE). Por lo que se restara la fecha actual de la fecha de nacimiento, para obtener la edad, anidando las funciones anteriores.
			
				SELECT TIMESTAMPDIFF 
				(YEAR, STR_TO_DATE(SUBSTRING(cadena_fecha_implicita,5,6),"%y %m %d"), 
				CURDATE()) AS 'Edad actual' 
			FROM edad_implicita;

 
 
No hay comentarios.:
Publicar un comentario