0

我正在使用 Redash 中的以下 SQL 查询,该查询从表中检索每月数据。

SELECT *
FROM Table 
WHERE
"Date" between '2021-04-01T00:00:00.669976+00:00' and '2021-04-30T23:59:59.669976+00:00'

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

4

2 回答 2

2

这对我来说效果很好:

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

于 2021-05-25T08:40:05.013 回答
0

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

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

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

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

在以下情况下:

  • @since = 2016-11-01

  • @直到 = 2016-11-14

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

之前订购日期时2016-11-15,这包括所有日期,2016-11-14与时间无关。

于 2021-05-25T07:55:12.367 回答