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

我尝试:

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

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

然而,这并没有起作用。

谁能提供一个原因的参考?

1705338 次浏览

尝试将日期封装到字符串中。

 select *
from dbo.March2010 A
where A.Date >= '2010-04-01';
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;
< p > (2010 minus 4 minus 1 is 2005 将其转换为适当的datetime,并使用单引号将修复此问题。

从技术上讲,解析器可能允许您使用

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

它会为你做转换,但在我看来,它比显式转换为DateTime的维护程序员可读性更差。

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


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

首先将TexBox转换为日期时间,然后....在查询中使用该变量

我们也可以在下面用like

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

综上所述,正确答案是:

select * from db where Date >= '20100401'  (Format of date yyyymmdd)

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

日期格式对我没有问题(Mydate的数据类型是datetime):
Where Mydate>'10/25/2021'Where Mydate>'2021-10-25'
但如果加上时间,以上答案就不适用了。
下面是我所做的:
where cast(Mydate as time)>'22:00:00'
如果您的查询需要一个日期,请添加日期,例如:
where cast(Mydate as time)>'22:00:00' and Mydate='10/25/2021' < / p >

在你的查询中,你没有在日期周围使用单引号。这就是问题所在。然而, 您可以使用以下任何查询来比较date

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




SELECT *
FROM dbo.March2010 A
WHERE A.Date >= CAST('2010-04-01' as Date);




SELECT *
FROM dbo.March2010 A
WHERE A.Date >= Convert(datetime, '2010-04-01' )

首先,您需要在转换前将两个日期转换为相同的格式

SELECT *
FROM dbo.March2010 A
WHERE CONVERT(DATE, A.Date) >= 2010-04-01;