424

私はしようとしています:

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

A.Date次のようになります:2010-03-04 00:00:00.000

ただし、これは機能していません。

誰かが理由のリファレンスを提供できますか?

4

7 に答える 7

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

クエリで2010-4-01は、は数式として扱われるため、本質的には次のようになります。

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

2010 minus 4 minus 1 is 2005 適切に変換し、datetime一重引用符を使用すると、この問題が修正されます。)

技術的には、パーサーを使用すると、

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

それはあなたのために変換を行いますが、私の意見では、DateTimeあなたの後に来るメンテナンスプログラマーのために明示的に変換するよりも読みにくいです。

于 2012-05-17T20:57:20.653 に答える
70

日付を文字列で囲んでみてください。

 select * 
 from dbo.March2010 A
 where A.Date >= '2010-04-01';
于 2012-05-17T20:56:53.460 に答える
3
DateTime start1 = DateTime.Parse(txtDate.Text);

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

最初にTexBoxをDatetimeに変換してから....その変数をクエリに使用します

于 2016-03-09T18:54:32.840 に答える