Hola jolie_girl:
Mucho cuidado con tus comentarios a las personas que te responden en el foro...
Cita: Usa mas tu imaginación gnsoloyo, mi pregunta fue demasiado simple otravez, pero bueno si me quieres ayudar mucho mas te dare toda mi información , aver si puedes solucionarlo de una mejor manera,:
Una cosa es usar la imaginación y otra muy distinta es tratar de jugar al adivino no lo crees???
En realidad, no te enfocas en un solo problema, comienzas hablando de una cosas y terminas planteando algo complétamente distinto...
vayamos por partes:
Código:
eso esta mall aparte incompleto pero bueno.........porque suponiendo que me trae un dia 30 de marzo pues le sumara 7 y dara 37
A qué te refieres con que te dará 37??? si estás manejando fechas, la función date_add, funciona perfectamente, te daría la fecha correcta, sin tener que hacer ningún calculo extra:
Código MySQL:
Ver originalQuery OK, 0 rows affected (0.07 sec)
+------------+------------------------------------+
+------------+------------------------------------+
| 2013-04-30 | 2013-05-07 |
+------------+------------------------------------+
Observa, esto colocando como fecha actual (@curdate = '2013-04-30'), si le agrego 7 días, no me regresa el 37 de abril como tal vez pudieras estár suponiendo, sino que me regresa como fecha el
7 de Mayo, lo cual es correcto:
Segundo, en las condiciones WHERE... creo que te estás equivocando, si quieres obtener los registros cuya fecha de vencimiento sea en una semana, deberías hacer algo como esto:
Código:
WHERE
siguientepago(campo,curdate(),campo)
between curdate() and date_add(curdate(), interval 7 day)
es decir, traeria todos los registros que vencen hoy y dentro de los siguientes 7 días... si quieres traer sólo los que vencen dentro de una semana simplemente cambias el between por una condición así
Código:
WHERE
siguientepago(campo,curdate(),campo) = date_add(curdate(), interval 7 DAY)
Lo mismo pasa para las quincenas:
Código:
WHERE
siguientepago(campo,curdate(),campo) = date_add(curdate(), interval 2 WEEK)
o para el mes:
Código:
WHERE
siguientepago(campo,curdate(),campo) = date_add(curdate(), interval 1 MONTH)
Debes tener cuidado simplemente con el manejo de los intervalos no es lo mismo agregar un mes a agregar 30 o 31 días... ¿por qué? observa este ejemplo:
supongamos que tienes una fecha 31 de enero, y le agregas 1 MES, ¿cuál crees que debería ser el resultado?
Código MySQL:
Ver originalQuery OK, 0 rows affected (0.00 sec)
+------------+--------------------------------------+
+------------+--------------------------------------+
| 2013-01-31 | 2013-02-28 |
+------------+--------------------------------------+
Observa que el resultado no es el mismo si agregas 30 días:
Código MySQL:
Ver original+------------+-------------------------------------+
+------------+-------------------------------------+
| 2013-01-31 | 2013-03-02 |
+------------+-------------------------------------+
Saludos
Leo