Realizar búsquedas en Access utilizando, en las condiciones del Where, campos de tipo fecha. Funciones útiles.
Búsquedas con fechas en Access
Hemos recibido una pregunta recientemente de un amigo que deseaba realizar búsquedas en Access utilizando, en las condiciones del Where, campos de tipo fecha. Después de varios intentos hemos rescatado un par de notas que pueden ser interesantes para publicar. Seguro que sirven de ayuda a otras personas que tengan que trabajar con fechas en consultas de Access.La consulta era la siguiente:
Tengo una tabla con varios campos. Dos de ellos son fechas, que correspoden con un intervalo. Uno de ellos es la fecha de inicio del intervalo (fechadesde) y otro la de final del intervalo (fechahasta)
Quisiera saber cómo se puede hacer una consulta SQL en Access para obtener los registros cuyo intervalo de fechas contenga el día de hoy.
Es decir, que la fecha desde sea menor que hoy y la fecha hasta sea mayor que hoy.
Estuvimos primero haciendo un par de pruebas sin éxito, comparando las fechas con operadores artitméticos. En algunos casos obtuvimos la respuesta esperada, pero no siempre funcionaban las sentencias y teníamos problemas al ejecutarlas desde Access o desde el servidor web, porque no devolvían los mismos resultados.
Función DateDiff()
Al final, la respuesta que propusimos pasó por utilizar la función DateDiff, que sirve para obtener la diferencia entre dos fechas. Por ejemplo:DateDiff("y", #06/10/2004#, Now())
Nos dice los días que han pasado desde el seis de octubre de 2004.
Nosotros podemos utilizarla como condición en un where de una sentencia SQL. Por ejemplo, para una sentencia como esta:
DateDiff("y",A,B)
- Si son iguales, la función devolverá cero.
- Si A es una fecha anterior a B, entonces la función devolverá un número de días que será mayor que cero.
- Si A es una fecha posterior a B, entonces devolverá un número de días que será menor que cero.
SELECT * FROM vuelos WHERE
DateDiff('y',fechadesde,now())>=0
and DateDiff('y',fechahasta,nom())<=0
Función DatePart
Sirve para extraer parte de una fecha. Recibe dos parámetros, el primero indica mediante un string la parte a obtener. El otro parámetro es la fecha con la que se desea trabajar.DatePart("m",fecha)
En este caso se está indicando que se desea obtener el mes del año. Otro valor posible para el primer parámetro es, por ejemplo "yyyy", que se utiliza para obtener el año con cuatro dígitos. Un ejemplo de sentencia SQL que utiliza esta función puede ser la siguiente:
SELECT DatePart("yyyy",validezdesde) FROM vuelos
Función DateAdd
Esta última función que vamos a ver en el presente artículo sirve para añadir a la fecha, algo como días, meses o años. Para ello la función recibe tres parámetros, el primero corresponde con un string para indicar las unidades de lo que deseamos añadir, por ejemplo, días, meses o años. El segundo parámetro es el número de días meses o años a adicionar y el tercer parámetro es la fecha a la que sumar esos valores. Vemos un ejemplo de su sintaxis:DateAdd("yyyy",10,validezdesde)
En este ejemplo la función DateAdd devolvería una fecha diez años posterior a validezdesde. Otros valores para el string del primer parámetro son "d", para añadir días, o "m", para añadir meses.
Un ejemplo del funcionamiento de esta función en una sentencia SQL es el siguiente:
SELECT DateAdd("yyyy",10,validezdesde) FROM vuelos
Miguel Angel Alvarez
Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...