我的表中有一个用于日期(DateTime)的列,并且我试图创建一个WHERE子句,即WHERE dates BETWEEN 12-11-2012 and 12-13-2012
日期列的样本值= 2012-05-24 00:38:40.260

我想说MM-DD-YYYY和MM-DD-YYYY之间的日期。

我试着做

WHERE dates BETWEEN ((convert(nvarchar(10), dates,110) = '2012-12-12') AND (convert(nvarchar(10), dates,110) = '2012-12-12'))

但似乎不起作用。 “=“附近的语法不正确

请帮忙

编辑:

感谢您提供的各种选项和说明。与@RichardTheKiwi的选项一起使用。

最佳答案

如果您的dates列不包含时间信息,那么您可以:

WHERE dates BETWEEN '20121211' and '20121213'

但是,鉴于您的dates列实际上是日期时间,您需要这样做
WHERE dates >= '20121211'
  AND dates < '20121214'  -- i.e. 00:00 of the next day

对于SQL Server 2008及更高版本,保留SARGability(使用索引以实现良好性能的能力)的另一个选项是:
WHERE CAST(dates as date) BETWEEN '20121211' and '20121213'

注意:始终与SQL Server一起使用ISO-8601格式YYYYMMDD,以获取明确的日期文字。

关于sql - 在SQL中按日期过滤,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13869640/

10-13 08:53