如何在 SQL 服务器中的两个日期之间 SELECT

How to SELECT between two dates in SQL Server

我需要使用两个日期的范围在 table 中给出 select 计数,但是我的日期是 "yyyy-MM-dd" 格式,当我执行 select SQL 它 returns 出现以下错误:

Converting a varchar data type to a datetime data type resulted in a value out of range

这是我正在使用的查询:

SELECT COUNT(*) AS score 
FROM requests 
WHERE date_em BETWEEN '2019-04-01' AND '2019-04-30'

Table结构

有人可以帮助我吗?

我的首选方法是:

SELECT COUNT(*) AS score
FROM requests
WHERE date_em >= '2019-04-01' AND
      date_em < '2019-05-01'

这会处理时间组件并将使用索引。

以下在 SQL 服务器中也能正常工作:

SELECT COUNT(*) AS score
FROM requests
WHERE CONVERT(date, date_em) BETWEEN '2019-04-01' AND '2019-04-30'

在SQL服务器中,这也将使用索引(如果可用)。但是,通常列上的函数排除了索引的使用,所以我对这种方法比较犹豫。

你试过这个吗

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。