Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/05/2015, 22:16
Avatar de gnzsoloyo
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, 5 meses
Puntos: 2658
Respuesta: Problema con funciones de fecha

Le estás dando demasiadas vueltas a algo en extremo simple.
Lo que planteas es:
Cita:
Necesito conocer los empleados que se hayan dado de alta en la empresa hace menos de 3 años
¿Qué representa ese "hace menos de tres años?
Bueno, simplemente que, siendo hoy 24/05/2015, ese grupo estaría compuesto por todos aquellos empleados cuya fecha de alta es mayor a 24/05/2012...

O sea que no es muy complicado, aunque el mismo valor se puede obtener varias formas, con diferentes funciones. Pero hagamoslo por la vía simple.
Si FechaAlta es un datetime:

Código MySQL:
Ver original
  1. ...
  2. WHERE DATE(FechaAlta) >  DATE_SUB(CURDATE(), INTERVAL 3 YEAR)

Si es un DATE:


Código MySQL:
Ver original
  1. ...
  2. WHERE FechaAlta >  DATE_SUB(CURDATE(), INTERVAL 3 YEAR)

Y esto es correcto desde el momento en que:
Código MySQL:
Ver original
  1. mysql> SELECT  DATE_SUB(CURDATE(), INTERVAL 3 YEAR) fecha;
  2. +------------+
  3. | fecha      |
  4. +------------+
  5. | 2012-05-24 |
  6. +------------+
  7. 1 row in set (0.08 sec)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)