Como é que eu pesquiso para todas as datas maiores do que uma determinada data no servidor SQL?

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

A.Date parece que: 2010-03-04 00:00:00.000

No entanto, isto não está a resultar.

Alguém pode indicar porquê?

Author: chŝdk, 2012-05-18

4 answers

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

Na sua consulta, 2010-4-01 é tratado como uma expressão matemática, por isso, em essência, ele leu

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

(2010 minus 4 minus 1 is 2005 Convertê-lo para um datetime adequado, e usando aspas simples irá corrigir este problema.)

Tecnicamente, o analisador pode permitir que te safes com o
select *  
from dbo.March2010 A 
where A.Date >= '2010-04-01'

Ele fará a conversão para você, mas na minha opinião é menos legível do que converter explicitamente para um {[[6]} para o programador de manutenção que virá depois de você.

 342
Author: David, 2013-02-11 15:42:43

Tente incluir a sua data numa cadeia de caracteres.

 select * 
 from dbo.March2010 A
 where A.Date >= '2010-04-01';
 45
Author: SliverNinja - MSFT, 2012-05-17 20:56:53

Também podemos usar como em baixo

SELECT * 
FROM dbo.March2010 A
WHERE CAST(A.Date AS Date) >= '2017-03-22';

SELECT * 
    FROM dbo.March2010 A
    WHERE CAST(A.Date AS Datetime) >= '2017-03-22 06:49:53.840';
 8
Author: dush88c, 2017-03-23 05:21:04
DateTime start1 = DateTime.Parse(txtDate.Text);

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

Primeiro converta o TexBox para o Datetime então....use essa variável na consulta

 3
Author: Suresh Parmar, 2016-03-09 18:54:32