プロが教えるわが家の防犯対策術!

mysql初心者です。以下のデータから勤務時間(end_time-start_time-break
_time)が8時間以上、かつ終了時間が22時以降の場合、(end_time-22:00)を深夜残業時間として、深夜残業時間を計算したいのですが、case文で場合分けしてAかつBの場合というような書き方はどのように書いたらいいでしょうか。よろしくお願いします。

name  start_time  end_time  break_time
田中   9:00      22:30    1:00
佐藤   9:00      21:00    1:00
渡辺   10:00     24:00    1:00
藤原   9:00      18:00    1:00

A 回答 (2件)

AかつBならIFをつかってANDでつなげばいい気がしますが・・・


CASEにこだわるなら、WHENで条件外をしぼってELSEで実数を得ればよいかも
ざっくり今回のだとこんな感じ?

SELECT name,start_time,end_time,break_time
,CASE
WHEN end_time<'22:00:00' THEN NULL
WHEN TIMEDIFF(TIMEDIFF(end_time,start_time),break_time)<='08:00:00' THEN NULL
ELSE TIMEDIFF(end_time,'22:00:00')
END AS SHINYA
FROM schedule
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。

IF文でもいけるんですね、勉強になります。
こだわってはいませんが、まだまだ未熟なもので、今回CASE文しか思いつきませんでした。
IF文でも再度考えてみます。

お礼日時:2011/06/13 12:58

case when (end_time - start_time - break_time)>=8


and end_time > '22:00:00'
then (end_time='22:00:00')
else 0 end

ただし、一日の就業時間が8時間未満だからと言って深夜手当を出さないのは労基法違反です。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。

確かにおっしゃるとおり、労基法違反ですね、考慮してませんでした。
8時間未満の文は別途考えて見ます。

お礼日時:2011/06/13 12:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す