Sql 通过提供起始日期和截止日期检索记录时出现问题

Sql 通过提供起始日期和截止日期检索记录时出现问题,sql,sql-server,Sql,Sql Server,我在通过提供起始日期和截止日期检索记录时遇到问题。我想获取日期为2010年2月8日的记录,我应该使用“到”和“从”日期字段。我试过: select * from dbo.BuzzMaster where date >= '2/7/2010' and date <= '2/8/2010' 仅当我提供以下信息时,我才能获得日期为“2010年2月8日”的记录: select * from dbo.BuzzMaster where date >= '2/7/2010'

我在通过提供起始日期和截止日期检索记录时遇到问题。我想获取日期为2010年2月8日的记录,我应该使用“到”和“从”日期字段。我试过:

select * from dbo.BuzzMaster
where date >=  '2/7/2010'
  and date <=  '2/8/2010'
仅当我提供以下信息时,我才能获得日期为“2010年2月8日”的记录:

select * from dbo.BuzzMaster
where date >=  '2/7/2010'
  and date <=  '2/9/2010'
从dbo.BuzzMaster中选择*
其中日期>='2010年2月7日'
日期='2/8/2010'

日期这些日期也有时间部分吗?如果有,您可以获得2/8的记录,如下所示:

WHERE Date >= '2/8/2010' AND Date < '2/9/2010'
其中日期>='2/8/2010'和日期<'2/9/2010'
这是因为“2010年2月8日12:34”>“2010年2月8日”


(另一件事是,我更喜欢在TSQL中以“yyyy-mm-dd”格式写入日期,它不区分区域性。)

这些日期也有时间部分吗?如果有,您可以获得2/8的记录,如下所示:

WHERE Date >= '2/8/2010' AND Date < '2/9/2010'
其中日期>='2/8/2010'和日期<'2/9/2010'
这是因为“2010年2月8日12:34”>“2010年2月8日”


(另一件事是,我更喜欢在TSQL中以“yyyy-mm-dd”格式写入日期,它不区分区域性。)

如果日期包含时间部分,则可以通过发出以下TSQL来获得所需的结果

select * from dbo.BuzzMaster 
where DATEADD(dd, 0, DATEDIFF(dd, 0, date))>=  '2/7/2010' 
  and DATEADD(dd, 0, DATEDIFF(dd, 0, date))<=  '2/8/2010' 
从dbo.BuzzMaster中选择*
其中DATEADD(dd,0,DATEDIFF(dd,0,date))>='2/7/2010'

和DATEADD(dd,0,DATEDIFF(dd,0,date))如果日期包含时间部分,则可以通过发出以下TSQL来获得所需的结果

select * from dbo.BuzzMaster 
where DATEADD(dd, 0, DATEDIFF(dd, 0, date))>=  '2/7/2010' 
  and DATEADD(dd, 0, DATEDIFF(dd, 0, date))<=  '2/8/2010' 
从dbo.BuzzMaster中选择*
其中DATEADD(dd,0,DATEDIFF(dd,0,date))>='2/7/2010'
和DATEADD(dd,0,DATEDIFF(dd,0,date))从此查询中使用:

select * from dbo.BuzzMaster
where date between '2/7/2010' and '2/8/2010'
从该查询中使用:

select * from dbo.BuzzMaster
where date between '2/7/2010' and '2/8/2010'

正如@treaschf所说,不知何故我认为你的日期有一个时间部分正如@treaschf所说,不知何故我认为你的日期有一个时间部分这种方法的问题是,它不能在日期列上使用索引。这种方法的问题是,它不能在日期列上使用索引。