每年在数据库中处理时间段的最佳方法是啥?

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 中查询日期范围(即:期间)。如果要设置存储过程以自动更新“周期”表以进行报告,则第二个链接向您展示了如何创建辅助表。如果查询花费的时间太长而无法动态执行,这将很有帮助。

以上是关于每年在数据库中处理时间段的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 和 MySQL 上处理时区的最佳方法是啥?

使用 Datatables 在 Laravel 中处理大量行的最佳方法是啥?

在 PL/SQL 中处理临时 LOB 的最佳方法是啥

在 mysql 中处理大数据的最佳方法是啥? (成员之间的跟进、通知等)

在 ASP.NET MVC 中使用 Universe 数据库处理身份验证的最佳方法是啥?

在 React-Native 移动应用程序中处理数据的最佳方法是啥?