如何在SQL Server中选择两个日期
我需要使用两个日期的范围在表中给出select计数,但是我的日期是“yyyy MM dd”格式,当我执行select SQL时,它返回以下错误: 将varchar数据类型转换为datetime数据类型会导致值超出范围 以下是我正在使用的查询:如何在SQL Server中选择两个日期,sql,sql-server,datetime,select,between,Sql,Sql Server,Datetime,Select,Between,我需要使用两个日期的范围在表中给出select计数,但是我的日期是“yyyy MM dd”格式,当我执行select SQL时,它返回以下错误: 将varchar数据类型转换为datetime数据类型会导致值超出范围 以下是我正在使用的查询: SELECT COUNT(*) AS score FROM requests WHERE date_em BETWEEN '2019-04-01' AND '2019-04-30' 表结构 日期=日期时间 有人能帮我吗?我的首选方法是: SELE
SELECT COUNT(*) AS score
FROM requests
WHERE date_em BETWEEN '2019-04-01' AND '2019-04-30'
表结构
- 日期=日期时间
有人能帮我吗?我的首选方法是:
SELECT COUNT(*) AS score
FROM requests
WHERE date_em >= '2019-04-01' AND
date_em < '2019-05-01'
在SQL Server中,这也将使用索引(如果可用)。但是,通常列上的函数都不允许使用索引,所以我对这种方法比较犹豫。您尝试过这种方法吗
SELECT COUNT(*) AS score FROM requests WHERE date_em BETWEEN '2019-04-01 00:00' AND '2019-04-30 23:59'
添加00:00和23:59使其看起来像DateTime。使用
20190401
和20190430
作为日期常量(不带破折号),因为该格式已明确转换为DateTime。您的案例2非常完美!它在这里工作得很好。谢谢大家!@gordonlinoffs由于这是使用日期,您应该注意使用介于之间的@guilhermestich。如果您使用介于之间的,请务必查看执行计划以查看是否使用索引。(当然,如果日期列上有索引)。
SELECT COUNT(*) AS score FROM requests WHERE date_em BETWEEN '2019-04-01 00:00' AND '2019-04-30 23:59'