我有一张包含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
所有日期均为时间戳值。
提前致谢。
答案 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
你也可以使用一个程序来计算这个...但是根据我的经验,有一个日期查找表一般非常有用,特别是如果你做一些事情,比如添加月份和年份。而且使用和排除故障肯定要简单得多。如果是我,我会添加一个日期查找表,确保它有一个日期索引,然后继续。