如何在MySQL中使用时间间隔从单行创建多行

时间:2014-06-17 18:21:12

标签: mysql

我有一张包含start_date,end_date和frequency的表格。使用MySQL查询我想生成多行,每个日期在start_date和end_date之间。以下是表格:

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

所有日期均为时间戳值。

提前致谢。

1 个答案:

答案 0 :(得分:1)

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

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

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