如何在 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结构
- date_em = 日期时间
有人可以帮助我吗?
我的首选方法是:
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。
我需要使用两个日期的范围在 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结构
- date_em = 日期时间
有人可以帮助我吗?
我的首选方法是:
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。