我有一个带有 return 错误日期的 between 子句的查询

I have a query with a between clause that is return wrong days

我正在开发一个 scholl 项目,我必须 return 来自数据库的一些数据(比如在查询中)并过滤 2 个日期之间的数据,所以我执行下面的查询。

Select L_AccessPoint.ap_id, ap_name, COUNT(*) AS NumeroAcessos, year,month,day
FROM L_AccessPoint INNER JOIN F_Presence ON L_AccessPoint.ap_id = F_Presence.ap_id
WHERE convert(varchar(10),F_Presence.ts, 120) between '2022-03-01' and '2022-03-02'
Group by    L_AccessPoint.ap_id, ap_name, year,month,day
order by L_AccessPoint.ap_id ASC, year DESC,month DESC,day DESC

但是当我以 yyyy-mm-dd 2022-02-28,2022-03-01,2022-03-02 格式执行 return 天的查询时。 像那样:

tableF_Presence结构是:

ts 列是日期时间。

tableL_AcessPoint结构是:

如何在这两个日期之间进行筛选?

我该如何解决我的问题?

抱歉所有试图提供帮助的人,但问题出在我的数据库上,ts 与月份和日期不对应,如您所见:

我会非常感谢所有帮助过我的人。

让我们分解一下:

WHERE convert(varchar(10),F_Presence.ts, 120) 
  between '2022-03-01' and '2022-03-02'
  1. 将列转换为字符串意味着您将永远、永远、永远无法利用该列的索引,无论它是否存在。
  2. 出于多种原因,使用 BETWEEN 对于日期范围来说是可怕的。
  3. 使用像 YYYY-MM-DD 这样的格式是不安全的,因为在很多情况下它会被误解为 YYYY-DD-MM

Dating Responsibly.

中的所有这些以及更多内容

查询的工作方式如下:

WHERE F_Presence.ts >= '20220301'
  AND F_Presence.ts <  '20220303'