Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

3 campos de tipo int pasarlos a un solo campo tipo date

Estas en el tema de 3 campos de tipo int pasarlos a un solo campo tipo date en el foro de Mysql en Foros del Web. hola amigos aca nuevamente planteando mis dudas, les cuento, tengo una tabla en una bd que no es mia de la cual saco la fecha ...
  #1 (permalink)  
Antiguo 30/11/2012, 08:57
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 4 meses
Puntos: 0
3 campos de tipo int pasarlos a un solo campo tipo date

hola amigos aca nuevamente planteando mis dudas, les cuento, tengo una tabla en una bd que no es mia de la cual saco la fecha de nacimiento, pero dicha fecha este compuesta de 3 campos distintos q son enteros, es decir los campos son:
año || mes || dia
1988 10 22

ese es el formato de la fecha, y lo que necesito yo es pasarla a formato date para luego realizar una funcion que me retorne el cumpleaños del individuo y que obviamente le sume un año mas a su edad, pero como les cuento no sé como pasar esa fecha que esta en campos distintos en formato entero para pasarla a formato date, eso es lo q necesito, porfavor agradeceria mucho su ayuda/guia amigos, quedo muy atento a sus respuestas de antemano gracias bye.
  #2 (permalink)  
Antiguo 30/11/2012, 09:31
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: 3 campos de tipo int pasarlos a un solo campo tipo date

En MySQL hay una forma sencilla:
Código MySQL:
Ver original
  1. DATE(CONCAT(año, '-', mes, '-', dia))
Existen otras, pero esa sería la más facil en tu caso.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 30/11/2012, 09:49
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: 3 campos de tipo int pasarlos a un solo campo tipo date

Hola gnzsoloyo, gracias por tu pronta respuesta, pero como es la sintaxis para hacer esa concatenacion que me indicas dentro de la funcion que estoy haciendo??
por ahora la tengo asi :

Código MySQL:
Ver original
  1. DELIMITER $$
  2. DROP PROCEDURE IF EXISTS aumenta_dias_feri $$
  3.     CREATE PROCEDURE aumenta_dias_feri ()
  4.  
  5.  
  6. DECLARE fecIngreso date;
  7. SET fecIngreso = SELECT DATE(CONCAT(ano, '-', mes, '-', dia))
  8. AS FECHA_INGRESO FROM PERIODO_INGRESO
  9.  

pero me da error de sintaxis en el select, por eso te consulto porfavor, como debo hacer esa concatenacion dentro de mi funcion, para luego utilizar esta variable en lineas posteriores dentro de mi funcion??? de antemano gracias quedo atento a tu respuesta bye.
  #4 (permalink)  
Antiguo 30/11/2012, 10:06
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: 3 campos de tipo int pasarlos a un solo campo tipo date

Y... Sí. tienes al menos dos errores:
1) No se puede usar SET variable = consulta. Debes usar SELLECT .. INTO variable, o bien colocar la consulta entre paréntesis.
2) La sentencia no está bien terminada. Le falta el terminador ";".
Primer caso:
Código MySQL:
Ver original
  1. DELIMITER $$
  2. DROP PROCEDURE IF EXISTS aumenta_dias_feri $$
  3. CREATE PROCEDURE aumenta_dias_feri ()
  4.     DECLARE fecIngreso DATE;
  5.     SET fecIngreso = (SELECT DATE(CONCAT(ano, '-', mes, '-', dia)) FECHA_INGRESO FROM PERIODO_INGRESO);
  6. DELIMITER ;
Segundo caso:
Código MySQL:
Ver original
  1. DELIMITER $$
  2. DROP PROCEDURE IF EXISTS aumenta_dias_feri $$
  3. CREATE PROCEDURE aumenta_dias_feri ()
  4.     DECLARE fecIngreso DATE;
  5.     SELECT DATE(CONCAT(ano, '-', mes, '-', dia)) into fecIngreso
  6.     FROM PERIODO_INGRESO);
  7. DELIMITER ;

Otro error es que ninguna de las dos opciones te permite recuperar el valor por cuanto la variable es local y el SP no tiene ningún parámetro OUT o INOUT en su declaración.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 30/11/2012, 13:01
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: 3 campos de tipo int pasarlos a un solo campo tipo date

Muchas gracias por tu ayuda gnzsoloyo lo hice y quedo asi:

Código MySQL:
Ver original
  1. DELIMITER $$
  2. DROP PROCEDURE IF EXISTS aumenta_dias_feri $$
  3.     CREATE PROCEDURE aumenta_dias_feri ()
  4.  
  5.  
  6.  SELECT DATE(CONCAT(AN_INGR, '-', MES_INGR, '-', DIA_INGR)) as fec_ingreso
  7. FROM PERIODO_INGRESO;
  8.  

ahora tengo q averiguar como hacer para llamar a este SP desde el otro SP que tengo q hacer para asi poder calcular los dias de vacaciones que le corresponde a cada empleado deacuerdo a su año de ingreso a la empresa :D... cual dudar te vuelvo a consultar porfavor .... slds :D
  #6 (permalink)  
Antiguo 30/11/2012, 13:33
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: 3 campos de tipo int pasarlos a un solo campo tipo date

gnzsoloyo disculpa las molestias nuevamente, pero como puedo hacerlo para dentro del mismo SP que me ayudaste a terminar agregarle una vaiable como argumento entre parentesis que esta contenga la concatenacion completa de la fecha de los tres campos int que contienen la fecha de ingreso???
por ejemplo quiero algo asi:

Código MySQL:
Ver original
  1. DELIMITER $$
  2.     DROP PROCEDURE IF EXISTS aumenta_dias_feri $$
  3.         CREATE PROCEDURE aumenta_dias_feri (OUT fec_ingr DATE)
  4.      
  5.     BEGIN
  6.  
  7. -- A ESTO ME REFIERO A PODER DESTINAR EL VALOR OBTENIDO DE LA CONCATENACION DE LOS 3 CAMPOS INT, PODER PASARSELO COMO DATE A UNA VARIABLE DE ESTE SP
  8.  
  9.  
  10.      fec_ingr SET = SELECT DATE(CONCAT(AN_INGR, '-', MES_INGR, '-', DIA_INGR)) as fec_ingreso
  11.     FROM PERIODO_INGRESO;
  12.      
  13.     END;


como podria lograr esto para posteriormente e el otro SP que hara los calculos con las fechas llame a este SP y este SP le entregue la fecha en formato date??? como podria lograr esto de una manera sintacticamente correcta?? porfavor agradeceria mucho tu ayuda/guia desde ya muy agradecido y quedo atento a tu respuesta.... slds y gracias.

Etiquetas: campos, date, int, tabla, tipo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:55.