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

时间:2012-05-17 20:56:14

标签: sql sql-server datetime

我正在尝试:

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

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

但是,这不起作用。

任何人都可以提供原因参考吗?

5 个答案:

答案 0 :(得分:400)

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的维护程序员的可读性低。

答案 1 :(得分:46)

尝试将日期括在字符串中。

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

答案 2 :(得分:9)

我们也可以像下面一样使用

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';

答案 3 :(得分:3)

DateTime start1 = DateTime.Parse(txtDate.Text);

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

首先将TexBox转换为Datetime然后....将该变量用于Query

答案 4 :(得分:0)

总而言之,正确的答案是.....

从db中选择*日期> ='20100401'(日期yyyymmdd的格式)

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