Foros del Web » Programando para Internet » ASP Clásico »

Consulta entre fechas que no da error ni resultados

Estas en el tema de Consulta entre fechas que no da error ni resultados en el foro de ASP Clásico en Foros del Web. Tengo esta consulta: sql= "select * FROM clientes WHERE fecha_alta BETWEEN "&fecha_mostrar_clientes&" and "&fecha_actual&" " Imprimo en pantalla lavariable sql y me aparece esto: select ...
  #1 (permalink)  
Antiguo 07/09/2006, 10:28
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
Consulta entre fechas que no da error ni resultados

Tengo esta consulta:

sql= "select * FROM clientes WHERE fecha_alta BETWEEN "&fecha_mostrar_clientes&" and "&fecha_actual&" "

Imprimo en pantalla lavariable sql y me aparece esto:

select * FROM clientes WHERE fecha_alta BETWEEN 31/08/2006 and 07/09/2006

Todo lo veo correcto pero no me arroja ningun resultado. El recorset está vacio.No me da ningún error.

Tengo varios registros en el campo fecha_alta con fecha 02/09/2006 que me deberían de salir y no encuentro la explicación.

El campo fecha_alta de la BD es formato fecha corta po rlo que no se que fallo tendrá.

¿Alguna idea?
  #2 (permalink)  
Antiguo 07/09/2006, 10:30
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
las fechas en sql server van entre apóstrofes

select * FROM clientes WHERE fecha_alta BETWEEN '31/08/2006' and '07/09/2006'

tambien checa el formato de fecha de tu servidor

Saludos
  #3 (permalink)  
Antiguo 07/09/2006, 10:53
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
Si pero en mi caso si a mi consulta:

sql= "select * FROM clientes WHERE fecha_alta BETWEEN "&fecha_mostrar_clientes&" and "&fecha_actual&" "

Le pongo apostrofes...

sql= "select * FROM clientes WHERE fecha_alta BETWEEN '"&fecha_mostrar_clientes&"' and '"&fecha_actual&"' "

Me dice que no coinciden los tipos ya que lo tomo como string.

La fecha del servidor es correcta ya que al hacer un date() me lo saca correctamente

¿Alguna idea?
  #4 (permalink)  
Antiguo 07/09/2006, 11:22
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
¿el campo Fecha_Alta es String? ¿por qué?

Pero bueno, en fin, lo que debes hacer es un CAST(Fecha_Alta AS DateTime) en el Where y listo

Saludos
  #5 (permalink)  
Antiguo 08/09/2006, 01:21
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
No el campo fecha_alta es de tipo fecha, no es string

Entonces?
  #6 (permalink)  
Antiguo 08/09/2006, 03:47
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
Si hago el sql de esta otra manera mas sencilla:

sql= "select * FROM clientes WHERE fecha_alta > "&fecha_mostrar_clientes&" "

me muestra todos los clientes sin tener en cuenta que la fecha sea menor a la que le indico en la variable fecha_mostrar_cliente.

imprimiendo la variable sql queda asi:

select * FROM clientes WHERE fecha_alta > 01/09/2006

No entinendo nada porque hago la consulta en access y me la hace bien:
fecha_alta > 01/09/2006
  #7 (permalink)  
Antiguo 08/09/2006, 06:29
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Cita:
No entinendo nada porque hago la consulta en access y me la hace bien:
fecha_alta > 01/09/2006
¿por que no habias mencionado que trabajas en Access si el primer còdigo que te dì te dije que era para SQL-Server?

select * FROM clientes WHERE fecha_alta BETWEEN #31/08/2006# and #07/09/2006#
  #8 (permalink)  
Antiguo 08/09/2006, 06:54
Avatar de diegopedro  
Fecha de Ingreso: agosto-2006
Ubicación: Santiago
Mensajes: 120
Antigüedad: 17 años, 10 meses
Puntos: 0
Para Oracle
select * FROM clientes WHERE fecha_alta BETWEEN to_date('31/08/2006 00:00:00','dd/mm/yyyy hh24:mi:ss') and to_date('07/09/2006 23:59:59','dd/mm/yyyy hh24:mi:ss')
  #9 (permalink)  
Antiguo 08/09/2006, 07:23
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
No es normal. Ahora me devulve resultados pero no entiendo nada. Con la consulta que me has puesto:

select * FROM clientes WHERE fecha_alta BETWEEN #31/08/2006# and #07/09/2006# prueba

me deberian de salir los que están entro el 31/08/2006 y los que esten entre el 07/09/2006.

Pues me sacan registros que no tendrian que salir (tiene de fecha 31/07/2006, 30/07/2006), y no me saca registros del 02/09/2006 por ejemplo.

¿Y eso tan raro?
  #10 (permalink)  
Antiguo 08/09/2006, 07:28
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Seguro tienes un formato de fecha diferente en tu configuración regional. Prueba modificando el LCID de la página con el número que le corresponda a tu pais.

Saludos
  #11 (permalink)  
Antiguo 08/09/2006, 07:47
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
He colocado al inicio del código: <% @LCID = 1034 %>

Pero me muestra lo smismos resultados al hacer la consulta a la BD.

No se me ocurre ya nada
  #12 (permalink)  
Antiguo 08/09/2006, 10:22
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Poné las fechas en formato AAAA/MM/DD

... BETWEEN #2006/08/31# and #2006/09/07#
__________________
...___...
  #13 (permalink)  
Antiguo 11/09/2006, 01:39
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
Ahora si me le hace bien Al Zuaga,podrias decirme el ¿por qué?

Muchas gracias!
  #14 (permalink)  
Antiguo 11/09/2006, 02:38
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
Al Zuwaga el problema que tengo ahora es que de las 2 fechas que uso en la consulta, una de ellas la cojo de un campo fecha de una Base de datos formato dia/mes/año.

He probado a cambiar los registros por año,mes,dia pero acces me cambia automaticamente de nuevo a dia,mes,año.

¿Como puedo solucionar esto o hacer que me funcione la consulta con dia,mes,año?
  #15 (permalink)  
Antiguo 11/09/2006, 10:57
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Ehhh... no entendí dónde probaste a cambiar los registros por año,mes,dia
Los "registros" (los datos) dejalos tal cual están (DD/MM/AAAA). Toda operación que hagas con ellos, hacela en formato AAAA/MM/DD y -creo- se acabó el problema.
__________________
...___...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:53.