Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Select - rango fechas

Estas en el tema de Select - rango fechas en el foro de SQL Server en Foros del Web. Hola a todos, tengo una consulta con un select por un rango de fechas, necesito algo asi, SELECT *FROM DATOS WHERE FECHA = '" & ...
  #1 (permalink)  
Antiguo 06/04/2009, 08:56
 
Fecha de Ingreso: enero-2002
Ubicación: Callao - Perú
Mensajes: 1.127
Antigüedad: 22 años, 4 meses
Puntos: 0
Exclamación Select - rango fechas

Hola a todos, tengo una consulta con un select por un rango de fechas, necesito algo asi, SELECT *FROM DATOS WHERE FECHA = '" & varFECHA & "'"'
Al realizar esto no me enviaba ningun dato a pesar que habian datos en la bd, al realizar un select getdate() me muestra lo siguiente:

"2009-04-02 16:50:27.090"

Supongo que por ahi viene el problema, a ver si me pueden dar una ayuda..

Gracias de antemano
__________________
SaLuDoS dE:
PePeLuChO dEl PeRú PaRa El MuNdO
  #2 (permalink)  
Antiguo 06/04/2009, 09:25
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 11 meses
Puntos: 220
Respuesta: Select - rango fechas

podrias probar de la siguiente manera

DECLARE @FECHA DATETIME
SET @FECHA=GETDATE()

SELECT * FROM DATOS WHERE CONVERT(DATETIME,(CONVERT(VARCHAR,FECHA,1))) = @FECHA;
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #3 (permalink)  
Antiguo 06/04/2009, 10:49
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Respuesta: Select - rango fechas

como comentario: lo mejor es evitar la conversion (aplicar funciones) de los campos de la tabla. Ya que cuando el numero de registros crece te puede pegar en el performance de tu consulta.

una alternativa es consultar la fecha con un rango..

por ejemplo. Where Fecha >= '20090404' (Fecha deseada) And Fecha < '20090405' (Fecha deseada + 1)


Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #4 (permalink)  
Antiguo 06/04/2009, 20:21
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: Select - rango fechas

Efectivamente !!, ademas de cuando se hacen CONVERSIONES en las columnas, se dejan de utilizar los INDICES.

Saludos
  #5 (permalink)  
Antiguo 06/04/2009, 22:57
 
Fecha de Ingreso: abril-2009
Mensajes: 40
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Select - rango fechas

si quieres seleccionar un registro de acuerdo a una fecha puedes hacerlo de la siguiente manera


si quieres hacer una compaacion con una fecha exacta
select * from tabla
where campo_fecha='06/04/2009'



si lo que deseas es obtener un rango entreciertas fechas

select * from tabla
where campo_fecha>='1/04/2009' and campo_fecha<='31/04/2009'

esta consulta te dara como resultado todos los registro en donde el campo fecha se encuentre en el mes de abril de 2009


dependiendo la configuracion del servidor, puede cambiar el orden de la fecha puede aparecer primero el año-mes- dia o dia-mes-año y tambien puede variar si usas diagonales o guiones '1/04/2009' o '1-4-2009'

Saludos !!!
  #6 (permalink)  
Antiguo 07/04/2009, 19:56
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: Select - rango fechas

Para no cambiar las configuraciones del servidor y no nos afecte por esos detalles, siempre utilicen formatos SQL ANSI.

WHERE campo_fecha >= '20090401' and campo_fecha <= '20090431'

Ademas, ¿quieren quitarle carga al motor?, dejen un espacio entre los signos de comparacion y sus campos.

Es algo muy simple.

Saludos
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 13:20.