Sigue siendo matemática de fechas, al decir de Leonardo, y como mucho usas funciones de fecha, las que puedes encontrar en el manual de referencia (
http://dev.mysql.com/doc/refman/5.0/...functions.html). No necesitas hacer operaciones aritméticas complejas para lograr algo tan simple.
Si quieres construir una fecha, a partir de otra, simplemente operas con lo necesario.
Código MySQL:
Ver original+-------------+
| @campofecha |
+-------------+
| 2010-04-01 |
+-------------+
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
+------------+
| @fecha |
+------------+
| 2013-07-01 |
+------------+
Básicamente, con esto en dos líneas transformo al 01/04/2010 en el 01/04/2013, y luego en el 01/07/2013, sin necesidad de mayores complicaciones aritméticas ni comparaciones innecesarias...
¿Se entiende la idea?
Incluso más; puedo hacerlo así:
Código MySQL:
Ver originalmysql
> SET @campofecha
:= DATE('2010-04-01');Query OK, 0 rows affected (0.00 sec)
+-------------+
| @campofecha |
+-------------+
| 2010-04-01 |
+-------------+
Query OK, 0 rows affected (0.06 sec)
+------------+
| @fecha |
+------------+
| 2013-04-01 |
+------------+
Query OK, 0 rows affected (0.00 sec)
+------------+
| @fecha |
+------------+
| 2013-07-01 |
+------------+
Y si lo anido más, lo puedo hacer en una sola linea:
Código MySQL:
Ver originalQuery OK, 0 rows affected (0.03 sec)
+------------+
| @fecha |
+------------+
| 2013-07-01 |
+------------+
Es más, ni siquiera lo tengo que poner en una variable, puedo operar directamente en una consulta:
Código MySQL:
Ver original+-------------+
| Vencimiento |
+-------------+
| 2013-07-01 |
+-------------+
Con esto último puedes ver que ni siquiera se necesita almacenarlo en ninguna parte, si el objetivo es usar ese valor para otra cosa (un UPDATE, por ejemplo). Simplemente se lo calcula donde se necesite, en tanto el campo "fecha" de la tabla esté accesible.
Por ejemplo: