gpt4 book ai didi

mysql - 创建一系列时间段作为行

转载 作者:行者123 更新时间:2023-11-29 02:36:23 24 4
gpt4 key购买 nike

我想编写一个查询,对于过去的任何给定开始日期,每一行都有一个到现在为止的一周长的日期间隔。

例如,假设开始日期为 2010 年 11 月 13 日,当前日期为 12-16-2010,我想要这样的结果集

+------------+------------+
| Start | End |
+------------+------------+
| 2010-11-15 | 2010-11-21 |
+------------+------------+
| 2010-11-22 | 2010-11-28 |
+------------+------------+
| 2010-11-29 | 2010-12-05 |
+------------+------------+
| 2010-12-06 | 2010-12-12 |
+------------+------------+

它不会超过 12,因为当前日期所在的为期一周的时间段不完整。

我什至不知道如何开始编写此查询。我可以在单个查询中执行此操作吗?还是应该使用代码进行循环,并进行多次查询?

最佳答案

在 MySQL 中动态创建这样的结果集非常困难(但并非不可能),因为它尚不支持任何 recursive CTEs , CONNECT BY , 或 generate_series我会在其他数据库中使用它来执行此操作。

这是您可以使用的替代方法。

创建并预填充一个表,其中包含从很久以前的某个日期到遥远的 future 某个日期的所有可能行。然后,您可以通过使用 WHERE 子句查询此表来轻松生成所需的结果,并使用索引来提高查询效率。

这种方法的缺点很明显:

  • 它会不必要地占用存储空间。
  • 如果您在填充表格的范围之外进行查询,您将得不到任何结果,这意味着您要么必须使用足够的日期填充表格以维持应用程序的生命周期,否则您需要一个每隔一段时间添加更多日期的脚本。

另请参阅此相关问题:

关于mysql - 创建一系列时间段作为行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4465470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com