Funciones para búsquedas con fechas en Access

06 de octubre de 2004
Valoración del artículo:
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.
Tenemos que comparar el día de hoy con las fechas desde y hasta. Hoy tiene que ser mayor que desde y menor que hasta. Nos queda como resultado esta sentencia.

SELECT * FROM vuelos WHERE
DateDiff('y',fechadesde,now())>=0
and DateDiff('y',fechahasta,nom())<=0

Nota: Hay que tener cuidado con el idioma de las fechas, pues en castellano se escriben de manera distinta que en inglés. Access intenta interpretar la fecha correctamente, por ejemplo, si introducimos 02/26/04 pensará que está trabajando en fechas en inglés y si introducimos 26/02/04 pensará que estamos escribiendo las fechas en castellano. El problema es con una fecha como 02/02/04 que su valor dependerá de cómo esté configurado el Access, en castellano o inglés.

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

Compartir en redes sociales

Comentarios
Fueron enviados 19 comentarios al artículo
14 comentarios no revisados
5 comentarios revisados:
Por: Otto
21/10/2004
Con las fechas hay que tener encuenta el formato con el que trabaja Access, mm/dd/yyyy, por lo que si queremos crear sentencias SQL hay que utilizar Me.Filter = “PROVEEDORS.FechaRevision Between # “ & Format(Me.TextoDesde, “mm dd yyy”) & “# And #” & Format(Me.TextoHasta, “mm dd yyyy”) & “#”
Por: Roberto
22/10/2004
Puedes usar campos TEXT de 10 para almacenar la fecha en formato YYYY-MM-DD (para poder hacer filtros correctos entre fechas).
Evitarás problemas de migración a otras bases de datos pues un CHAR es estandar en todos los SGBD.

No quiero decir que sea mejor opción, pero sí que la tomes en cuenta.
Por: Cesar
08/5/2006
Tambien funciona con el siguiente sql:

SELECT * FROM tabla WHERE ((tabla.fecha) Between #01/01/50# And #01/12/03#);

alpha0
access y calendarios
06/4/2011
buenas, primero que todo muchas gracias por la atencion que le van a prestar a mi pregunta.

tengo una informacion que tengo que meter en una db de access es de una finca productora de leche, necesito saber como o que debo de hacer para que en cada formulario me salga el calendario y de acuerdo con cada fecha me abra un campo para introducir un valor a esa fecha,
me explico mejor: tengo el formulario de una vaca para llevar un registro de cuanta leche da por dia,
asi en el calendario dar la fecha para introducir los litros de leche, o si tengo que crear un formulario por cada dia producido,
muchas gracias

ricardo...
Fechas SQL
27/7/2011
Estimados con mucho éxito he trabajado las fechas en bases de datos .dbc de vfoxpro. El campo es TEXT 10 (C) y TEXT (19) cuando tiene hora. Antes de guardar los datos tiene todas las validaciones de un campo fecha. Luego he podido crear cualquier consulta SQL que contenga fechas, y todas han funcionado bien y muy rápido. Celular Chile 98415909. Las tablas tiene casi un millón de registros.

Manuales relacionados
Categorias relacionadas
El autor
Miguel Angel Alvarez
Director de DesarrolloWeb.com
http://www.desarrolloweb.com


Lectura recomendada
Compra este libro en Agapea, la librería urgente a domicilio.
Últimas noticias
Donaciones
Si piensas que te hemos ayudado y merecemos tu apoyo económico...