我的表中有一个用于日期(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/