每年在数据库中处理时间段的最佳方法是啥?
Posted
技术标签:
【中文标题】每年在数据库中处理时间段的最佳方法是啥?【英文标题】:What's the best way to handle periods of time yearly in a database?每年在数据库中处理时间段的最佳方法是什么? 【发布时间】:2014-06-11 17:30:27 【问题描述】:我想弄清楚如何处理一年中的一段时间。周期可以是每周、每月和每 14 天。
对于每周期间,假设 2014 年,期间 1 应该是从 2013 年 12 月 23 日到 2014 年 1 月 4 日。所以我需要这个。
期间 1:2013 年 12 月 23 日 - 2014 年 1 月 4 日 第 2 期:2014 年 1 月 5 日 - 2014 年 1 月 11 日 第三阶段:2014 年 12 月 12 日 - 2014 年 1 月 18 日 ...... ..
因此,今天是 2014 年 6 月 11 日,周期将是周期 24,对于每 14 天,我们将拥有:
期间 1:2013 年 12 月 23 日 - 2014 年 1 月 11 日 第二阶段:2014 年 1 月 12 日 - 2014 年 1 月 25 日 ... ..
等等。
每年的时期都需要从 1 开始,因为 2015 年的第 1 期每周将是从 2014 年 12 月 30 日到 2015 年 1 月 6 日。此外,我应该能够有一个时期页面,我可以在其中单击时期 1 2014 年的每周并获得该时期的报告。
我有一个带有 id、period_no、from_date、to_date、类型(每周、每月、每 14 天)的周期表,以及另一个通过 period_id 与周期表相关的表。所以我想知道处理这个问题的最佳方法是什么?我应该最初设置一定数量的周期吗?例如,假设 2015 年是明天,那么明天系统会自动用今年的所有相应期间填充期间表?还是我应该手动创建期间?还是根本不保存 periodos 并在我提出请求时将它们全部计算出来而不保存在数据库中?
我希望我说清楚了。
【问题讨论】:
【参考方案1】:保留时间戳或日期时间,并根据您的使用情况进行分组。
mysql: group by date RANGE?
如果您需要快速报告,并且您有大量数据(即:您的 SELECT 很慢),您可以构建一个报告表来适当地更新您的组。
very big mysql table and reporting
【讨论】:
好的,我不确定我是否没有解释自己,或者你是说我不需要有一个周期表,保存我的日期,使用分组依据并计算周期数查询的那一刻? 正确。第一个链接解释了如何在 SELECT 中查询日期范围(即:期间)。如果要设置存储过程以自动更新“周期”表以进行报告,则第二个链接向您展示了如何创建辅助表。如果查询花费的时间太长而无法动态执行,这将很有帮助。以上是关于每年在数据库中处理时间段的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Datatables 在 Laravel 中处理大量行的最佳方法是啥?
在 mysql 中处理大数据的最佳方法是啥? (成员之间的跟进、通知等)