2012-08-03 15 views
8

Chcę napisać wybierz, aby znaleźć datę z bazy danych. W bazie danych mam pole akcji daty jako typ daty z datami takimi jak to 7/12/2012 17:21:33. Jak pisać wybierz, aby otrzymać wszystkie dane z 7/12/2012?data sql wybierz

so if I have db like this: 
1 7/12/2012 17:21:33 
2 7/12/2012 15:21:35 
3 8/12/2012 8:25:35 
4 9/12/2014 8:25:35 

I want get only these rows: 
1 7/12/2012 17:21:33 
2 7/12/2012 15:21:35 
+2

jakiego oprogramowania do bazy danych używasz – Dave

Odpowiedz

7
select * from 
yourtable where yourDateColumn < '2012-12-8' and yourDateColumn >= '2012-12-07' 
+2

może "twojaDataŚcina> =" 2012-12-07 "" jest lepiej, jeśli chcesz złapać północy również – pater

+0

dzięki! edytowane –

1

Można użyć BETWEEN porównać daty:

select * 
from yourTable 
where yourDate between '2012-07-12' and '2012-08-12' 

Lub jeśli szukasz jednym dniu w szczególności można wykorzystać. Można zmienić „2012-07-12” do parametru, który może zostać przekazany w tak można dostać dowolną datę:

select * 
from yourTable 
where Cast(datediff(day, 0, yourDate) as datetime) = '2012-07-12' 
+0

Pytanie dotyczy jednego dnia; podajesz dane przez miesiąc i jeden dzień. –

+0

@ JonathanLeffler edytowane, aby uwzględnić, jeśli chcą tylko jeden dzień, aby zostać zwrócony. – Taryn

2

Myślę, że Julius pyta jak się tylko wiersze z 7/12/2012 17:21:33

Więc mogę zaoferować Państwu jedno rozwiązanie, które jest sprawdzone, aby mieć rację:

1) Spójrz na funkcję Convert T-SQL w T-SQL Convert function

2) Kiedy będzie spójrz na to, zanotuj kody konwersji

Convert codes

źródło zdjęcia: http://technet.microsoft.com/en-us/library/ms187928.aspx

A teraz kiedy zirytowany wszystkim z teorią Oto kod:

dla Europy

select * from table_name 
where convert(varchar, column_that_has_date_in, 104) = '12.07.2012' 

dla nas

select * from table_name 
where convert(varchar, column_that_has_date_in, 101) = '07/12/2012' 

I jeszcze jedno warto wspomnieć, to dlaczego, kiedy wpisać w sql mamy 0 wiersze:

select * from table_name 
where column_that_has_date_in like '%07/12/2012%' 

To dlatego, że zapytanie jest tylko patrząc na terminach z Żadna część TIME.