0

カレンダーテーブルを生成しています。次のように繰り返しシーケンスを生成するにはどうすればよいですか。ありがとう。

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のシーケンスは、6、6、6まで1、1、1、2、2、2、3、3、3、....になり、その後、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...。

4

1 に答える 1

0

さて、あなたは基本的な算術でこれを行うことができます。答えは、日付と時刻を2013年1月1日の午前0時からの時間数に変換し、整数除算とモジュロ演算子を使用してこれらを直列に変換することです。結果は次のようになります。

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
于 2013-02-26T03:13:54.603 に答える