Problemas con fechas

Estoy desarrollando páginas ASP y utilizo ACCESS como mi manejador de BD's pero tengo problemas con el manejo de las fechas ya que realizo consultas para obtener registros en un cierto intervalo de fechas, primero realizo pruebas en consultas en ACCESS y después las aplico en las páginas, pero al realizar una consulta en la vista diseño introduzco en el criterio por ej. Lo siguiente: <#20/06/02#(seleccionar los registros cuya fecha sea menor al 20 de Junio del 2002), pero en la vista SQL me muestra lo siguiente: select * from xxxx where xxxx. Fecha<#06/20/02#, no entiendo por que hace esto, y ejecuta la consulta correctamente, pero si en la vista sql modifico la consulkta como select * from xxxx where xxxx. Fecha<#20/06/02# no me devuelve ningun registro, en la pagina ASP no puedo introducir una consulta como la hace ACCESS ya que obtengo fechas del sistema y me las regresa asi: dd/mm/aa y en ACCESS la consulta la ejecuta asi: mm/dd/aa, el campo fecha es de tipo fecha/hora con formato de fecha corta in mascara de entrada, te agradecere que me expliques por que sucede esto y si puedo modificarlo. Te envío un saludo.

3 respuestas

Respuesta
1
La verdad es que tanto esto como los formatos numéricos son un auténtico quebradero de cabeza. Access guarda los datos de fecha en formato amercano (mm/dd/aa). La vista de diseño hace una especie de traducción, por eso te devuelve resultados indicándole la fecha en formato europeo (dd/mm/aa), pero desde SQL tienes que elaborar la consulta en el único formato que entiende la base de datos (americano). Lo mismo sucede con los puntos o comas decimales en SQL Server. Lo mejor que puedes hacer es manipular este tipo de datos antes de hacer la consulta. Es decir, girar el mes y el día si el servidor utiliza formato europeo.
Respuesta
1
La respuesta es sencilla, ¿access trabaja con formato de fecha mm/dd/yyyy siempre incluso teniendo la configuración regional con formato de fecha dd/mm/yyyy... porque? Pregúntaselo a microsoft! Supongo que como access es una bd que lleva ya unos años funcionando no habrán querido cambiar esto! Por tanto en consultas con fecha hay que hacer este tratamiento especial.
1 saludo.
Respuesta
1
El problema del formato de las fechas parece no ser un problema exclusivo de Access. A mi me pasa algo similar con Excel.
No sé cuál es el origen del problema pero he podido solucionarlo a veces forzando el formato de la fecha utilizando la función
Format(valorFecha, "dd-mm-yyyy")
A partir de aquí habría que probar variantes de manera tal que la sentencia SQL quede tal como la necesitas.
En algunos casos he debido armar la sentencia SQL concatenando cadenas de textos donde en la parte donde se establece la condición para la fecha fuerzo el formato con la función Format$(xxxx, formato).
Intenta algo y luego me cuentas.
Suerte
Ok, muchas gracias te agradezco, no se me había ocurrido utilizar esa función pero lo que hice fue lo siguiente: de la fecha que iba a comparar obtuve primero el día, después el mes y después el año( day(fecha), month(fecha) y year(fecha)) y después las concatene de tal forma que me quedara en el formato americano(fechanueva=mes+"/"+día+"/"+year)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas