fechas en select - urgente
tengo un problema
tengo un select dentro del cual en la clausula where tengo un campo FECHA ( de una base acces ) BETWEEN FECHA1 AND FECHA2
esto no me funciona correctamente, es como que esta comparando y no se da cuenta de que son fechas, porque si pongo el mismo mes, funciona, en vez si pongo distintos meses no
ejemplo 01/01/2003 al 09/01/2003 anda
en vez 20/01/2003 al 02/02/2003 no anda
que hago mal?
muchas gracias
tengo un select dentro del cual en la clausula where tengo un campo FECHA ( de una base acces ) BETWEEN FECHA1 AND FECHA2
esto no me funciona correctamente, es como que esta comparando y no se da cuenta de que son fechas, porque si pongo el mismo mes, funciona, en vez si pongo distintos meses no
ejemplo 01/01/2003 al 09/01/2003 anda
en vez 20/01/2003 al 02/02/2003 no anda
que hago mal?
muchas gracias
Lo que pasa es que cuando utilizas BETWEEN, tu determinas un valor "and" otro valor o en su defecto utilizas "or", pero recuerda que es un rango de valores no de nombres de campos, si es en fecha debera ser por ejemplo #01/01/2003# and #09/01/2003#, es sobre valores aunque tu trabajes variables, recuerda que la variable tiene un valor, por ejemplo:
varFecha = #01/01/2003#.
En este caso tu debes generar tu recordset sin el BETWEEN debes ejercer los comparativos por codigo te será más accesible, o hazlo pero tu proporciona el rango de valores, no pongas el nombre del campo.
Es lo que te sugiero, ya que para reconocer una fecha recuerda que debes utilizar el " # " antes y despues.
pruebalo y checa los resultados.
Esto lo puedes checar incluso en la ayuda de Vb, en el apartado de Between and operator.
Atentamente.
Víctor M. Saldaña
varFecha = #01/01/2003#.
En este caso tu debes generar tu recordset sin el BETWEEN debes ejercer los comparativos por codigo te será más accesible, o hazlo pero tu proporciona el rango de valores, no pongas el nombre del campo.
Es lo que te sugiero, ya que para reconocer una fecha recuerda que debes utilizar el " # " antes y despues.
pruebalo y checa los resultados.
Esto lo puedes checar incluso en la ayuda de Vb, en el apartado de Between and operator.
Atentamente.
Víctor M. Saldaña
Perdona que entre a corregir tu respuesta, pero creo que puede llevar a confusión.
En una cláusula BETWEEN no se puede usar OR, y sí que puedes usar campos, siempre que a la sentencia SELECT le lleguen los valores de los mismos.
y ahora contestando a la pregunta inicial, yo prefiero usar la funcion datevalue, que me permite más libertad a la hora de enviar los datos.
"SELECT * FROM facturas WHERE fecha BETWEEN DATEVALUE('1/3/2003') AND DATEVALUE ('5/3/2003')"
si necesitaras enviar las fechas desde código, con variables, cada datevalue se quedaría en:
DATEVALUE(' " + CSTR(mifecha) + " ')
Saludos.
En una cláusula BETWEEN no se puede usar OR, y sí que puedes usar campos, siempre que a la sentencia SELECT le lleguen los valores de los mismos.
y ahora contestando a la pregunta inicial, yo prefiero usar la funcion datevalue, que me permite más libertad a la hora de enviar los datos.
"SELECT * FROM facturas WHERE fecha BETWEEN DATEVALUE('1/3/2003') AND DATEVALUE ('5/3/2003')"
si necesitaras enviar las fechas desde código, con variables, cada datevalue se quedaría en:
DATEVALUE(' " + CSTR(mifecha) + " ')
Saludos.
