Jak mogę wyszukać wszystkie daty większe od określonej daty w SQL Server?

Staram się:

SELECT * 
FROM dbo.March2010 A
WHERE A.Date >= 2010-04-01;

A.Date wygląda jak: 2010-03-04 00:00:00.000

Jednak to nie działa.

Czy ktoś może podać referencję dlaczego?

Rozwiązanie
select *  
from dbo.March2010 A 
where A.Date >= Convert(datetime, '2010-04-01' )

W twoim zapytaniu, 2010-4-01 jest traktowane jako wyrażenie matematyczne, więc w istocie brzmi ono

select *  
from dbo.March2010 A 
where A.Date >= 2005; 

(2010 minus 4 minus 1 to 2005). Konwersja do poprawnego datetime i użycie pojedynczych cudzysłowów naprawi ten problem).

Technicznie rzecz biorąc, parser może pozwolić ci uciec z

select *  
from dbo.March2010 A 
where A.Date >= '2010-04-01'

wykona konwersję za ciebie, ale moim zdaniem jest to mniej czytelne niż jawna konwersja do DateTime dla programisty obsługi technicznej, który przyjdzie po tobie.

Komentarze (4)

Spróbuj zamknąć swoją datę w łańcuchu znaków.

 select * 
 from dbo.March2010 A
 where A.Date >= '2010-04-01';
Komentarze (1)
DateTime start1 = DateTime.Parse(txtDate.Text);

SELECT * 
FROM dbo.March2010 A
WHERE A.Date >= start1;

Najpierw konwertujemy TexBox na Datetime następnie....use tę zmienną do Query

Komentarze (0)