2011-12-12 12 views
10

Estoy tratando de hacer una consulta entre 2 fechas. Me gustaría hacerlo sin tener que preocuparme por el tiempo. Cuando un usuario ingresa las 2 fechas en las que desea buscar, no hay selección por tiempo. Esto significa que las fechas que ingresan por defecto son a las 12:00 a.m.TSQL: Fecha ENTRE Consulta - Ignorando tiempo

Las fechas en la tabla sí tienen tiempos. Solo me gustaría ignorar todos los tiempos para que la búsqueda recupere todos los registros de dicho rango de fechas.

Aquí es mi SQL:

TheDate BETWEEN @EnteredBeginDate AND @EnteredEndDate 

Así que cuando un usuario hace una búsqueda por rango entre el 8/6/2009 y 9/9/2009 Quiero devolver los registros:

8/6/2009 11:33:02 AM 
8/6/2009 11:39:17 AM 
9/9/2009 8:21:30 AM 

lo que está sucediendo ahora es solo me dan la espalda:

8/6/2009 11:33:02 AM 
8/6/2009 11:39:17 AM 

por favor alguien puede recomendar la mejor manera de hacer esto en SQL? Sé cómo hacerlo en C#.

+0

Qué ** ** versión de SQL Server ?? –

Respuesta

10

sólo tiene que utilizar para la DATEADD enddate para establecerlo en la medianoche del día siguiente ...

TheDate BETWEEN @EnteredBeginDate AND DATEADD(day, 1, @EnteredEndDate)

Si quieres ser muy precisa, se puede restar un segundo o milisegundos desde que para hacer que 11:59:59 en la fecha especificada:

TheDate BETWEEN @EnteredBeginDate AND DATEADD(second, -1, (DATEADD(day, 1, @EnteredEndDate)))

+0

Esta será mi respuesta elegida. +1 para la opción precisa. ¡Gracias a todos! – Jared

1
TheDate BETWEEN @EnteredBeginDate AND dateadd(day, 1, @EnteredEndDate) 
+3

Si publica código, XML o muestras de datos, ** POR FAVOR ** resalte esas líneas en el editor de texto y haga clic en el botón "muestras de código" ('{}') en la barra de herramientas del editor para formatear y sintaxis ¡destaquelo! –

7

Si estás en SQL Server o 2008 R2, podría utilizar el nuevo DATE tipo de datos:

TheDate BETWEEN CAST(@EnteredBeginDate AS DATE) AND CAST(@EnteredEndDate AS DATE) 

que se despoja de la porción de tiempo y sólo se fija en la fecha

+0

Esto es genial. Aunque tengo que usar 2005. – Jared

0

Si simplemente se pasa la fecha en SQL Server, hará la hora 12:00 a.m. Por lo tanto, la fecha de finalización de la cláusula between es 9/9/2009 12:00 AM. Simplemente agregue un día o modifique la fecha pasada en la consulta para incluir la hora correcta.

3

Si está utilizando SQL Server 2008, y luego hacer esto:

TheDate BETWEEN cast(@EnteredBeginDate as date) AND cast(@EnteredEndDate as date) 
Cuestiones relacionadas