如何在SQL Server中查询大于某个日期的所有日期?

我正在努力。

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

A.Date看起来像。2010-03-04 00:00:00.000

然而,这并不奏效。

谁能提供一个参考,说明原因?

对该问题的评论 (2)
解决办法
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减去4减去1是2005) 将其转换为正确的 "日期",并使用单引号,将解决这个问题)。

从技术上讲,分析器可能允许你用以下方式来解决

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

它将为你进行转换,但在我看来,这比为你之后的维护程序员明确转换为`DateTime'的可读性要差。

评论(4)

试着把你的日期包围在一个字符串中。

 select * 
 from dbo.March2010 A
 where A.Date >= '2010-04-01';
评论(1)

我们也可以用下面这样的方式

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';
评论(1)
DateTime start1 = DateTime.Parse(txtDate.Text);

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

首先将TexBox转换为Datetime,然后....,将该变量用于查询。

评论(0)

综上所述,正确答案是......。

select * from db where Date >= '20100401' (日期格式为yyyymmdd)

这将避免与其他语言系统的任何问题,并将使用索引。

评论(0)