2009-09-25 17 views
5

Jak wybrać rekordy między dwiema datami w dwóch kolumnach?Wybierz rekordy między dwiema datami w dwóch kolumnach

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

mam datę (2009-09-25) i chciałbym wybrać rekordy, które mieści się w ramach czasowych ColumnDateFrom do ColumnDateTo.

próbki

Rekord 1 ColumnDateFrom = I ColumnDateTo = 2009-08-01 2009-10-01

Rekord 2 ColumnDateFrom = 2010-08-01 2010-10-01 I ColumnDateTo =

Jeśli moja data wprowadzenia to 2009-09-28; następnie uzyskać rekord 1

+2

W jakim silniku bazy danych? –

+1

A który konkretny silnik bazy danych to jest? I jak zamierzasz przekazać datę do SQL, jako literał osadzony (tj. Jako część SQL) lub jako parametr? A jakie ramy klienta używasz do rozmowy z bazą danych? Zasadniczo twoje pytanie? Składnia SQL? Jak napisać to w C# lub php czy cokolwiek? albo co? Ponieważ, pod względem pomysłowym, masz rację, poza tym, że składnia do zapisywania daty jest wyłączona (ale muszę wiedzieć, który silnik bazy danych używasz, aby powiedzieć ci, co jest poprawne). –

+0

Dziękuję, Używam SQL 2005 –

Odpowiedz

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

jeśli dobrze rozumiem, spróbuj tego:

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

Miło, ale lubię lepiej ... wybierz * z MyTable gdzie 2009-09-25 między ColumnDateFrom a ColumnDateTo –

+0

Dziękuję bardzo za szybką odpowiedź ... BARDZO ŁADNE ! Teraz skończyłem i mogę iść do domu ... Życzę wszystkim miłego weekendu! –

+1

Nigdy nie używam MIĘDZY, uważam, że łatwiej jest czytać> =,>, <= i/lub

4

Spróbuj tego:

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

Dziękuję działa dobrze ... –

0

mysql:

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

Dziękuję To rozwiązanie –

5

Standardowy Między powinno działać (T-SQL).

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

prostu usunąć „jest”

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

pamiętać rozważyć portiomn czasu, jeśli wartości kolumn mają datę i czas w nich ... (zakładając DateOnly() jest funkcją, która niektóre paski czas z kolumny datetime)

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

Dziękuję Współpracuje zi bez portium czasu –

+0

To wywołanie funkcji na kolumnie data zamierza uniknąć wykorzystywania indeksu nie jest to ? –

Powiązane problemy