首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按月分组,即从起始时间戳起30天,而不是实际的月份

问按月分组,即从起始时间戳起30天,而不是实际的月份
EN

Stack Overflow用户
提问于 2020-01-04 15:35:06
回答 2查看 26关注 0票数 0

我有一个月度服务,每个月给客户30分钟的使用时间,我需要统计他们的使用量并按月分组,但不确定最好的处理方式,因为开始日期可能是一个月的任何一天。

我应该按比例分摊吗?转换为完整的月份或计算天数?

有没有一种理想的方法来统计这一点?假设他们每个月有30分钟的使用时间,所以我想统计一下那个“月”使用了多少分钟。

假设有一个已用分钟表,订阅的开始日期是2019-06-13 00:00:00

minutes_used_table:

代码语言:javascript
复制
Userid                MinutesUsed               Date

1                         5                    2019-06-19
1                         6                    2019-06-23
1                         8                    2019-06-28
1                         15                   2019-07-05
1                         3                    2019-07-12
1                         8                    2019-07-19
1                         5                    2019-08-14
1                         3                    2019-08-22
1                         1                    2019-08-26
1                         2                    2019-09-13

或者,我是否应该按比例计算,而不是以30天为增量进行跟踪,如果从6月13日开始,我是否应该只计算从开始日期到月底的天数,无论是哪一天,然后是从月初到开始日期的天数?

想知道什么是最有意义的,以及如何执行它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-04 18:52:36

使用

代码语言:javascript
复制
GROUP BY DATEDIFF(`Date`, @starting_date) DIV @period_length

在您的特定情况下,它将是

代码语言:javascript
复制
GROUP BY DATEDIFF(`Date`, '2019-06-13 00:00:00') DIV 30
票数 0
EN

Stack Overflow用户

发布于 2020-01-04 15:44:51

从编码的角度来看,为用户找到第一个日期,从日期中减去它,并计算30天的周期数,这并不是什么大问题。但这在未来将很难支持,并且此解决方案将有许多角落案例:例如,某人在1月20日首次开始使用产品,在使用了一个月后,已经闲置了一段时间,并在4月5日返回。这种情况的正确开始日期是什么?

所以我建议使用日历月份。并且可以根据剩余天数减少第一个月的限制,或者甚至在第一个月给出完整的试用期,因为用户有能力花费30分钟。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59588835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档