如何在 SQL Server 中的两个日期之间进行选择

G S*_*ick 2 sql sql-server select datetime between

我需要使用两个日期的范围在表中给出选择计数,但是我的日期采用“yyyy-MM-dd”格式,当我执行选择 SQL 时,它返回以下错误:

将 varchar 数据类型转换为 datetime 数据类型导致值超出范围

这是我正在使用的查询:

SELECT COUNT(*) AS score 
FROM requests 
WHERE date_em BETWEEN '2019-04-01' AND '2019-04-30'
Run Code Online (Sandbox Code Playgroud)

表结构

  • 日期_em = 日期时间

有人能帮我吗?

Gor*_*off 5

我首选的方法是:

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

这处理时间部分并将使用索引。

以下内容在 SQL Server 中也适用:

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

在 SQL Server 中,这还将使用索引(如果可用)。但是,通常列上的函数不允许使用索引,因此我对这种方法更加犹豫。