将每个月的日期周期设置在日期之间

Set date period for each month to be between dates

不确定如何正确提问。

我有几个 table 用于计数、收入和处理的交易。
通常这些记录每天。所以自然地,如果我想计算收入,它将是该月的第一天到最后一天。

但是,每当我们向客户开具发票时,都不是该月的第一天到最后一天。 是每个月的22号到下个月的21号。

由于所有数据都存储在不同的 table 上,我如何让每个 table 汇总每个月 22 日至 21 日的计数、收入和交易,但它们代表整个月

例如

1 月 21 日 = 22/12/2020 - 21/01/2021 2 月 21 日 = 22/01/2021 - 21/02/2021 ...

您可以减去 21 天,然后加上一个月。然后,eomonth() 或类似的东西来识别月份。例如,要计算“一月”

中的行数
select eomonth(thedate) as monthendate,
       dateadd(year(thedate), month(thedate), 1) as month_day1
from t cross apply
     (values (dateadd(month, 1, dateadd(day, -21, datecol)))
     ) v(thedate)