construir fecha nacimiento subtrayendo de un campo en mysql

76 views
Skip to first unread message

Saúl Piña

unread,
Feb 17, 2016, 10:35:25 AM2/17/16
to Comunidad de Visual Foxpro en Español
Saludos,

Estoy tratando de construir para obtener la fecha de nacimiento desde un campo, pero no puedo obtener los datos completos, sobretodo del año, ya que necesito anteponer "19" porque solo cuento con los ultimos 2 digitos del año en ese campo.

El codigo es el siguiente:

select concat_ws('19',substring(elect,7,2),' ',substring(elect,9,2))
from enero2015

gracias por la sugerencia

Víctor Hugo Espínola Domínguez

unread,
Feb 17, 2016, 11:20:58 AM2/17/16
to publice...@googlegroups.com
Muestra un ejemplo del contenido de la columna ´elect´.


Saludos,
Víctor.
Lambaré - Paraguay.

Saúl Piña

unread,
Feb 17, 2016, 11:35:26 AM2/17/16
to Comunidad de Visual Foxpro en Español
columna elect :

XXSCTR62091528M100

la fecha de nacimiento de esa clave seria:
año : 62
mes: 09
dia: 15

se debe anteponer '19' a los dos primeros digitos numericos de la clave

para guardar el resultado en el campo fnacimiento
1962-09-15

gracias

Víctor Hugo Espínola Domínguez

unread,
Feb 17, 2016, 12:57:02 PM2/17/16
to publice...@googlegroups.com
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.


Saludos,
Víctor.
Lambaré - Paraguay.


El 17 de febrero de 2016, 12:35, Saúl Piña<saulpi...@gmail.com> escribió:

Antonio Meza

unread,
Feb 17, 2016, 1:12:42 PM2/17/16
to Comunidad de Visual Foxpro en Español
Ahi te va el select completo sin tabla, ya ajusta el nombre de la variable 'a" por el nombre del campo, lo puedes ejecutar desde HeidiSql.

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

Puse la secuencia para que entiendas el SQL, es decir se obtiene el dato, se convierte a fecha y luego se obtiene la edad, lógico solo necesitas la ultima instrucción, las primeras como te comento son solo para que veas el proceso.

NOTA: Tienes que tener cuidado con el 19 porque si nacieron en el 2000 ??

Un error común es querer resolver el problema de un solo golpe, cuando debes ir paso a paso obteniendo los valores hasta llegar a lo que se desea.

saludos
Antonio Meza

Marcelo Barberis

unread,
Feb 17, 2016, 1:14:45 PM2/17/16
to publicesvfoxpro

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.

Antonio Meza

unread,
Feb 17, 2016, 1:17:36 PM2/17/16
to Comunidad de Visual Foxpro en Español
Lo obtiene de una clave compuesta algo parecido al DNI pero creo que es la clave de la credencial de elector de México, esa clave la proporciona el Gobierno chafa que tenemos jajajaja

saludos
Antonio Meza

Saúl Piña

unread,
Feb 17, 2016, 1:25:35 PM2/17/16
to Comunidad de Visual Foxpro en Español
Shhh el gobierno que tenemos es porque nosotros mismos lo elegimos, y si se obtiene de una clave, y barberis: no acostumbro a separar los digitos de la fecha...como para que?


Saúl Piña

unread,
Feb 17, 2016, 1:28:14 PM2/17/16
to Comunidad de Visual Foxpro en Español
Gracias por el ejemplo, y por ahora no debo preocuparme por el 19 0 2000
recuerda que se supone son mayores de 18 años los que cuentan con la clave....es decir.....a preocuparme a partir del 2018....

Saludos.
 

Antonio Meza

unread,
Feb 17, 2016, 1:37:18 PM2/17/16
to Comunidad de Visual Foxpro en Español
Recuerda que en el 2018 hay que ir por el cambio verdadero jajajajaja

Ojo!!! La corrupción es la que hace que ganen los de siempre no los votos, a poco tu crees todavía en los magos reyes??? jajaja

Siempre me eh preguntado porque el voto debe ser secreto? si cuando vas a un estadio te pones la camiseta de tu equipo, no te escondes, si cuando eres religioso vas a la iglesia o templo de tu creencia y no te escondes, y lo peor cuando están en campaña los partidos políticos anda la gente vestida con playeras, gorras, sombrillas y accesorios del partido de su preferencia, y en los coches y casas pegan propagandas de sus partidos, es decir no se esconden, entonces para que sirve el voto secreto si cada quien en su colonia sabe quien vota por quien jajajajaj

Bueno el voto secreto solo sirve para la corrupción y afectar los resultados solo para eso sirve!!! 

NOTA: Hablo de México y el Gobierno jodido que tenemos jjajaja

saludos
Antonio Meza

Antonio.xt

unread,
Feb 17, 2016, 1:53:34 PM2/17/16
to Comunidad de Visual Foxpro en Español

Saul, pero el gobierno nosotros no lo elegimos, solo seleccionamos uno de los tantos (pri, pan, prd, etc) que nos imponen.

Un ejemplo es este ultimo, a peña nieto nadie lo queria, y curiosamente fue el que gano.

Bueno, eso digo yo, jaja

Antonio Meza

unread,
Feb 17, 2016, 1:59:53 PM2/17/16
to Comunidad de Visual Foxpro en Español
Tocayo!!! lo mas curioso que en mi caso le pregunto a mis amigos, familiares, conocidos y no conocidos si votaron por el payaso que dice ser presidente jajaja y lo mas chistoso es que todos dicen que NO!!! entonces como fue que gano?? jajajaj

en fin!!

saludos

Luiz Alexandre Ruiz

unread,
Mar 2, 2016, 9:02:39 AM3/2/16
to Comunidad de Visual Foxpro en Español
Olá, você está fazendo este processo pelo VFP?? Não seria melhor tratar os dados direto no FOX?

"XXSCTR62091528M100"

SELECT elect FROM enero2015, trazendo os dados para um cursor de nome curEnero2015 por exemplo.

SCAN

lsAux = curEnero2015.Elect
ldDataNasc = CTOD(SUBSTR(lsAux,11,2) + "/" + SUBSTR(lsAux,9,2) + "/" + "19" + SUBSTR(lsAux,7,2))
? ldDataNasc

ENDSCAN
Reply all
Reply to author
Forward
0 new messages