在mysql的日历表中生成重复序列

时间:2013-02-26 03:05:37

标签: mysql sequence repeat

我正在生成一个日历表,如何生成重复序列,如下所示。感谢。

dt                   |id_1|id_2  
2013-01-01 00:00:00       |1|              3            
2013-01-01 01:00:00       |1|              3         
2013-01-01 02:00:00       |1|              3    
2013-01-01 03:00:00       |2|              3       
2013-01-01 04:00:00       |2|              3          
2013-01-01 05:00:00       |2|              4         
2013-01-01 06:00:00       |3|              4

id_1的序列将是1,1,1,2,2,2,3,3,3 ......直到6,6,6,然后重新开始1,1,1,..

和id_2的序列将从3,3,3,3,3,4,4,4,4,4 ......开始直到9,9,9,9,9,然后重新开始1,1 ,1,1,1 ......

1 个答案:

答案 0 :(得分:0)

嗯,你可以用基本的算法做到这一点。答案是将日期和小时转换为自2013年1月1日午夜以来的小时数,然后使用整数除法和模运算符将它们转换为系列。结果如下:

select (((date(dt) - date('2013-01-01))*24 + hour(dt)) div 3) mod 5) + 1 as id_1,
       (2+(((date(dt) - date('2013-01-01))*24 + hour(dt)) div 5) mod 9) + 1 as id_2