Dice el refrán que «El tiempo es oro», y que cierto es. El tiempo es el camino sobre el que discurre la vida, y es un camino limitado y desconocido para cada uno (sino, te invito a que veas la película IN TIME, y ya me cuentas).
Bajo esta perspectiva, en muchos proyectos, el cliente solicita funciones que agilicen los resultados de sus consultas, en las aplicaciones que desarrollamos para ellos. Es decir, conseguir la información con el mínimo tiempo posible invertido.
Para eso, voy a compartir unas funciones que trabaja precisamente con eso, con el tiempo. Se trata de las funciones DAY, MONTH y YEAR de PHP.
Es habitual querer ver ciertos resultados de el último mes, el último año, etc. de una manera rápida y sencilla, sin tener que estar seleccionando en un calendario un día de inicio, y otro final, que significa estar pinchando en un listado el día, el mes, etc. «Quiero ver de manera rápida cuánto hemos facturado en el último mes», por ejemplo.
Lo primero que debemos conocer es la fecha actual. Eso es bien sencillo con la función date() de PHP.
Guardamos en 2 variables estos valores, de esta manera:
$present_month = date(«m»);
$present_year = date(«Y»);
Ahora, con estos valores ya almacenados, podemos incluir en nuestra sentencia SQL:
SELECT * FROM nombre_tabla WHERE Month(campo_fecha) = $present_month AND Year(campo_fecha) = $present_year
Lo único de lo que tenemos que asegurarnos es que el campo_fecha, sea un timestamp. De esta manera, lo que le estamos diciendo a la BBDD es que nos muestre los registros cuyo mes y año del campo campo_fecha coincidan con el mes y año en el que estamos actualmente.
¿Y si queremos que nos muestre justo los datos del mes anterior al nuestro, o los datos del mismo mes, pero el año anterior?, pues es tan sencillo como añadir un -1 a las variables declaradas anteriormente:
$present_month = date(«m»)-1;
o
$present_year = date(«Y»)-1;
También podemos hacer que ese mes o año sea una variable, enviada por GET o POST, de manera que podemos dejar total libertad al cliente para elegir el mes o el año del que quiere hacer la consulta:
$present_month = $_GET[‘month’];
$present_year = $_GET[‘year’];
Pero para esto, necesitaríamos hacer un formulario, con un campo que indique el mes y otro que indique el año, y tener que enviar estos datos para poder recogerlos luego, y hemos dicho que esto era para ahorrar tiempo, ¿no? 🙂