如何在MySQL中按时间间隔从一行创建多行

如何在MySQL中按时间间隔从一行创建多行,mysql,Mysql,我有一张表,上面有开始日期、结束日期和频率。使用MySQL查询,我想生成多行,每个日期介于开始日期和结束日期之间。以下是表格: ID | start_date | end_date | frequency ---------------------------------------- 1 | 1402876800 | 1403049600 | daily 现在,我希望查询输出如下所示: active_date | start_date | end_date | frequency

我有一张表,上面有开始日期、结束日期和频率。使用MySQL查询,我想生成多行,每个日期介于开始日期和结束日期之间。以下是表格:

ID | start_date |  end_date  | frequency
----------------------------------------
 1 | 1402876800 | 1403049600 | daily
现在,我希望查询输出如下所示:

active_date | start_date |  end_date  | frequency
--------------------------------------------------
 1402876800 | 1402876800 | 1403049600 | daily
 1402963200 | 1402876800 | 1403049600 | daily
 1403049600 | 1402876800 | 1403049600 | daily
所有日期均为时间戳值


提前感谢。

最简单的方法是创建一个日期表,并使用between条件进行连接,例如

SELECT d.date AS active_date, t.start_date, t.end_date, t.frequency
FROM {your_table} AS t
INNER JOIN {date_lookup_table} AS d
ON d.date BETWEEN t.start_date AND t.end_date

你也可以用一个程序来计算这个。。。但根据我的经验,拥有一个日期查找表通常是非常有用的,特别是如果你做了一些事情,比如添加月份和年份。而且它的使用和故障排除肯定要简单得多。如果是我,我会添加一个日期查找表,确保它有日期索引,然后继续。

谢谢您的解决方案。但是日期查找表的结构是什么?由于该表包含年份值,我是否需要为即将到来的日期运行cron作业?如果是我,我将创建一个包含datetime、date{yyyy-mm-dd}、month{1,2,3等}、quarty{1,2等}、year{1970,1971等}的表。而不是cron作业,我只是在Excel中生成它,然后从1970年到(比如)2100年。将其导入MySQL。为每一列添加索引。创建该表、将其导入SQL并添加列大约需要10分钟。至少在我的经验中,这种表得到了大量的重用,特别是如果你用你的数据做任何类型的业务报告的话。不管怎样,只做一个表?没有得到任何。但通过使用程序,它有望实现。