Come posso eseguire una query per tutte le date maggiori di una certa data in SQL Server?

Sto provando:

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

A.Date sembra: 2010-03-04 00:00:00.000

Tuttavia, questo non funziona.

Qualcuno può fornire un riferimento per il perché?

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

Nella tua domanda, 2010-4-01 è trattato come un’espressione matematica, quindi in sostanza si legge

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

( 2010 minus 4 minus 1 is 2005 Conversione in un datetime appropriato, e l’utilizzo di virgolette singole risolverà questo problema).

Tecnicamente, il parser potrebbe permetterti di farla franca

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

farà la conversione per te, ma a mio avviso è meno leggibile rispetto alla conversione esplicita a un DateTime per il programmatore di manutenzione che verrà dopo di te.

Prova a racchiudere la tua data in una stringa di caratteri.

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

Possiamo usare come di seguito pure

 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'; 
 DateTime start1 = DateTime.Parse(txtDate.Text); SELECT * FROM dbo.March2010 A WHERE A.Date >= start1; 

Prima converti TexBox in Datetime poi … usa quella variabile nella Query