MySQLを使用して、機械の稼働時間を管理しております。
〇実現したいこと;
同じ「機械番号」が稼働している時間の差分を営業時間(土日祝日を除く)に換算して集計したい。
・営業時間:平日 9:00~17:30(8.5h)
・営業日:土日・祝日を除く平日
例 テーブル名:tb_run
機械番号 | 開始日時 | 終了日時 |
---|---|---|
aaa | 2020/12/4 9:00 | 2020/12/4 19:00 |
bbb | 2020/12/4 7:30 | 2020/12/7 22:00 |
※機械番号:文字列型
※開始日時、終了日時:日時型
「稼働時間=終了日時-開始日時」で集計する際に、営業時間換算したいです。
〇計算イメージ:
・1行名:
そのまま計算(timediffを使用)すると、
稼働時間(h) = 終了日時(2020/12/4(金)19:00)-開始日時(2020/12/4(金) 9:00)
のため、10hになりますが、営業時間外の時間(17:30~19:00)は除外した8.5hという結果をしたい。
・2行目;
稼働時間(h) = 終了日時(2020/12/7(月)22:00)-開始日時(2020/12/4(金) 7:30)
同様に、そのまま計算すると、86.5hとなりますが
以下の営業時間外の分を引いた「23.5h」という結果を集計したい。
①2020/12/4(金) 7:30~9:00 (1.5h)
②2020/12/4(金) 17:30~2020/12/7(月)9:00(61.5h)
→①+②=63h
テーブル(tb_run)には、曜日のカラムはありませんが、別テーブルで日付から曜日を特定するテーブルは管理していますので、Join等で曜日をカラムに追加することは可能です。
何卒、よろしくお願い致します。
★2020/12/12 16:43更新;
曜日を付加したテーブルに更新させていただきます。
曜日のテーブルは開始日時、終了日時の日付に対して、曜日を追加する予定です。
例 テーブル名:tb_run_2
|機械番号|開始日時|終了日時|開始日時_曜日|終了日時_曜日
|:--|:--:|--:|
|aaa|2020/12/4 9:00|2020/12/4 19:00|金|金
|bbb|2020/12/4 7:30|2020/12/7 22:00|金|月
※曜日のテーブル(tb_calender)は以下になります。「稼働時間(h)」を算出する上で、さらに集計しやすい結合案がありましたら、アドバイスをいただけると助かります。
曜日テーブル:tb_calender
日付 | 曜日 |
---|---|
2020/12/4 | 金 |
2020/12/5 | 土 |
2020/12/6 | 日 |
2020/12/7 | 月 |
以下略 |
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/12 07:56
2020/12/12 08:44 編集
2020/12/12 09:24
2020/12/12 10:37