2009-09-25 34 views
5

¿Cómo selecciono los registros entre dos fechas en dos columnas?Seleccionar registros entre dos fechas en dos columnas

Select * From MyTable Where 2009-09-25 is between ColumnDateFrom to ColumnDateTo 

que tienen una fecha (2009-09-25) y yo como para seleccionar los registros que se encuentra en el marco de tiempo para ColumnDateFrom ColumnDateTo.

Muestra

Record 1 ColumnDateFrom = 2009-08-01 Y ColumnDateTo = 2009-10-01

la ficha 2 ColumnDateFrom = 2010-08-01 Y ColumnDateTo = 2010-10-01

Si mi fecha de entrada es 2009-09-28; Entonces consigo registro 1

+2

¿Bajo qué motor de base de datos? –

+1

¿Y qué motor de base de datos particular es este? ¿Y cómo va a pasar la fecha al SQL, como un literal incrustado (es decir, como parte del SQL) o como un parámetro? ¿Y qué marco de cliente está usando para hablar con la base de datos? ¿Cuál es básicamente tu pregunta? La sintaxis SQL? ¿Cómo escribirlo en C# o php o lo que sea? ¿o que? Porque, en lo que respecta a las ideas, está en lo cierto, excepto que la sintaxis para escribir la fecha está desactivada (pero necesito saber qué motor de base de datos está utilizando para decirle qué es lo correcto). –

+0

Gracias, Uso SQL 2005 –

Respuesta

1
select * 
from MyTable 
where ColumnDateFrom <= '2009-09-25' 
    and ColumnDateTo >= '2009-09-25' 
3

si he entendido bien, intente esto:

SELECT 
    * 
    FROM MyTable 
    WHERE ColumnDateFrom <= '2009-09-25' AND ColumnDateTo >= '2009-09-25' 
+0

Bueno, pero me gusta más ... select * from MyTable where '2009-09-25' entre ColumnDateFrom y ColumnDateTo –

+0

Muchas gracias por su rápida respuesta ... MUY BONITO ! Ya terminé y puedo irme a casa ... ¡Les deseo a todos un buen fin de semana! –

+1

Nunca uso ENTRE, me resulta más fácil leer> =,>, <= y/o

4

Prueba esto:

SELECT * FROM MyTable WHERE '2009-09-25' BETWEEN ColumnDateFrom AND ColumnDateTo 
+1

, funciona bien ... Gracias –

0

mysql:

select * from MyTable where '2009-09-25' between ColumnDateFrom and ColumnDateTo 
+0

Esta es la solución –

5

estándar entre deberían trabajar (T-SQL).

SELECT * FROM MyTable WHERE @MYDATE BETWEEN ColumnDateFrom AND ColumnDateFrom 
0

Basta con retirar el "es"

Select * From MyTable 
Where '2009-09-25' Between ColumnDateFrom to ColumnDateTo 

recuerde tener en cuenta la portiomn tiempo si los valores de las columnas tienen fecha y la hora en ellos ... (suponiendo DateOnly() es una función que las tiras el tiempo desde una columna de fecha y hora)

Select * From MyTable 
Where '2009-09-25' Between DateOnly(ColumnDateFrom) 
         To DateOnly(ColumnDateTo) 
+0

Gracias, Funciona bien con y sin el tiempo portium –

+0

Esta llamada a la función en la columna de la fecha en que se va a evitar cualquier uso índice no es ? –