Ver Mensaje Individual
  #2 (permalink)  
Antiguo 11/11/2010, 12:07
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: 17 años, 1 mes
Puntos: 2658
Respuesta: Mezclar php en una consulta

Si lo que quieres es una consulta que te devuelva registros si el campo "FECHA" de ese mismo tiene más de 365 días de diferencia con la fecha actual (infiero que eso es lo que hace tu función en PHP, te podrás imaginar que MySQL ya cuenta con esas capacidades en el mismo SQL:
Código MySQL:
Ver original
  1. FROM clientes
  2. WHERE TIMESTAMPDIFF(DAY, Fecha, CURDATE()))>365;

O bien, si quieres que calcule directamente un año:
Código MySQL:
Ver original
  1. FROM clientes
La única condición que tiene es que los tipos de datos deben ser iguales, es decir, si FECHA es un DATE, debe compararse con un CURDATE() que es el DATE actual. Si "FECHA" fuese un DATETIME debe previamente ser convertido a DATE, porque de lo contrario tomará también las horas en cuenta para realizar el cálculo.
Esto implica que esta comparación da falso:
Código MySQL:
Ver original
  1. SELECT TIMESTAMPDIFF(YEAR, '2010-11-09 20:45:00', '2011-11-09 20:44:59')>0 RESULTADO
Y esta da verdadero:
Código MySQL:
Ver original
  1. SELECT TIMESTAMPDIFF(YEAR, '2010-11-09 20:45:00', '2011-11-09 20:45:00')>0 RESULTADO

Veamos:
Código MySQL:
Ver original
  1. mysql> SELECT TIMESTAMPDIFF(YEAR, '2010-11-09 20:45:00', '2011-11-09 20:44:59')>0 RESULTADO;
  2. +-----------+
  3. | RESULTADO |
  4. +-----------+
  5. |         0 |
  6. +-----------+
  7. 1 row in set (0.00 sec)
  8.  
  9. mysql> SELECT TIMESTAMPDIFF(YEAR, '2010-11-09 20:45:00', '2011-11-09 20:45:00')>0 RESULTADO;
  10. +-----------+
  11. | RESULTADO |
  12. +-----------+
  13. |         1 |
  14. +-----------+
  15. 1 row in set (0.00 sec)

Como puedes apreciar, si los datos son DATETIME, un segundo es importante para el resultado...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)