按跨越 2 天的时间分组

Group by time that spans 2 days

我正在尝试获取营业时间为第二天上午 11 点至凌晨 2 点的企业的月销售额。我尝试通过每天分组来执行以下操作,假设最坏的情况是他们在凌晨 3 点之前进行销售。假设这是 16 小时的销售。我还没有检查总数是否正确,但我注意到它只返回 29 天,而 1 月份有 31 天。 a_invoices 是每张发票的主发票,a_tabs 是每张发票的明细。

我这样做正确吗?我知道基本的 MySql 这有点超出我的薪水等级。感谢您的帮助。

SELECT DATE(a_invoices.startdate - INTERVAL 16 HOUR) as day , sum(a_tabs.Total)
FROM a_invoices
Right JOIN a_tabs on a_invoices.TabId = a_tabs.TabId
WHERE a_invoices.closedate BETWEEN '2022-01-01 11:00:00' and '2022-01-30 03:00:00'
AND a_invoices.status='c' and a_tabs.status<>'v'
GROUP BY day

你从1号写到30号。尝试从 1 号到 1 号。每月更新查询也会更容易

SELECT DATE(a_invoices.startdate - INTERVAL 16 HOUR) as day , sum(a_tabs.Total)
FROM a_invoices
Right JOIN a_tabs on a_invoices.TabId = a_tabs.TabId
WHERE a_invoices.closedate BETWEEN '2022-01-01 11:00:00' and '2022-02-01 03:00:00'
AND a_invoices.status='c' and a_tabs.status<>'v'
GROUP BY day