Buenas Compañer@s:
Me encuentro con un problema bastante serio al ejecutar una consulta en la que quiero filtrar por un campo de tipo fecha con formato dd/mm/yyyy, cuando el DIA de la fecha por la que quiero filtrar es menor de 13, ya que al llegar la SQL a MS Access ésta se pone en formato mm/dd/yyyy. (cuando el día es 13 o mayor el filtro se ejecuta bien ya que MS Access no puede poner el DIA en el lugar del MES).
Este problema lo he detectado al ejecutar la consulta desde una aplicación VB6 SP6, así como al teclear la consulta directamente en la base de datos MS Access, en la vista SQL.
Las pruebas las he realizado con MS Access 2000, MS Access XP y MS Access 2003; detectándose el mismo problema en los tres productos.
A continuación se detallan tres ejemplos que reproducen el problema:
Imaginese una tabla con los siguientes campos:
Tabla Empleados:
ID Autonumérico 'Código del empleado
Nombre Texto 'Nombre del empleado
FechaNacimiento Fecha 'Fecha de nacimiento del empleado
Al realizar una consulta para obtener los empleados
que han nacido entre el 21 de noviembre de 1980
(21/11/1980) y el 2 de enero de 1981 (02/01/1981)
la comparación con la segunda fecha (02/01/1981)
se traduce automáticamente al formato ingles
(01/02/1981) devolviendo la SQL un conjunto de
datos no acorde con lo solicitado.
Ejemplos:
Ejemplo1: la siguiente consulta devuelve un
conjunto de datos en el que se incluyen los
empleados que han nacido entre el 21 de noviembre
de 1980 y el 1 de febrero de
de 1981; cuando debería devolver los nacidos entre
el 21 de noviembre de 1980 y el 2 de enero de
1981.
SELECT Id, Nombre
FROM Empleados
WHERE FechaNacimiento BETWEEN #21/11/1980# AND
#02/01/1981#
Ejemplo2: la siguiente consulta también devuelve
un conjunto de datos en el que se incluyen los
empleados que han nacido entre el 21 de noviembre
de 1980 y el 1 de febrero de
de 1981; cuando debería devolver los nacidos entre
el 21 de noviembre de 1980 y el 2 de enero de
1981.
SELECT Id, Nombre
FROM Empleados
WHERE FechaNacimiento >= #21/11/1980#
AND FechaNacimiento <= #02/01/1981#
Ejemplo3: es esta consulta más simple también tengo el mismo problema
SELECT Id, Nombre
FROM Empleados
WHERE FechaNacimiento <= #02/01/1981#
Un Saludo y Gracias desde ya
Berta