SQL 检索每月数据的查询

SQL Query to Retrieve Monthly Data

我在 Redash 中使用以下 SQL 查询,该查询从 table.

检索每月数据
SELECT *
FROM Table 
WHERE
"Date" between '2021-04-01T00:00:00.669976+00:00' and '2021-04-30T23:59:59.669976+00:00'

我想知道是否有一种解决方法可以有效地更新 WHERE 子句,而不是在每个月底手动输入它。

对于您的情况,我建议您避免任何涉及使用 GRP_Date 字段进行 convert 或其他类型转换的解决方案。通过这样做,您不允许 SQL 服务器能够使用索引,如果 GRP_Date 字段有一个索引,这会以非常明显的方式影响您的性能。

当然,由于您的问题中已经提到的原因,between 在这种特定情况下并不理想。

我建议以下条件以获得最佳性能(充分利用索引)并避免时间问题

where GRP.GRP_date >= @since
and GRP.GRP_date < dateadd(day, 1, @until) -- @until + 1 day

在以下情况下:

  • @since = 2016-11-01

  • @until = 2016-11-14

where GRP.GRP_Fecha >= '2016-11-01'
and GRP.GRP_Fecha < '2016-11-15' 

订购 2016-11-15 之前的日期时,这包括 2016-11-14 之后的所有日期,而不考虑时间。

这对我来说效果很好:

WHERE
EXTRACT(MONTH FROM  "Date") = EXTRACT(MONTH FROM CURRENT_DATE) AND EXTRACT(YEAR FROM  "Date") = EXTRACT(YEAR FROM CURRENT_DATE)