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

mnemlml8  于 2022-11-21  发布在  SQL Server
关注(0)|答案(8)|浏览(180)

我 在 努力 :

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

中 的 每 一 个
A.Date 看 起来 像 :2010-03-04 00:00:00.000
然而 , 这 是 行不通 的 。
谁 能 提供 一 个 参考 为什么 ?

pkln4tw6

pkln4tw61#

我们也可以使用如下所示

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

r3i60tvu2#

在您的查询中,您没有使用单引号将日期括起来。这就是问题所在。但是,您可以使用以下任何查询来比较日期

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' )
n1bvdmb6

n1bvdmb63#

综上所述,正确答案是:

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

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

ejk8hzay

ejk8hzay4#

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

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

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

xwbd5t1u

xwbd5t1u5#

日期格式对我来说没有问题(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'

polhcujo

polhcujo6#

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

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

x0fgdtte7#

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的维护程序员,将在您之后。

cs7cruho

cs7cruho8#

请尝试将日期包含在字符串中。

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

相关问题