- ベストアンサー
勤怠システムを作ってます。
問題点ですが 例えば20日21時出勤~21日1時退社とします。 この場合、データベースへの登録を日付ごと登録したら良いと前回アドバイスいただきました。 (それまでは日付が変わるごとにデータベースに登録した為、上記の例に対応できなかった) しかし、この手法だと出勤中の人の所に出勤中(出勤データが今日の日付と合致したら出勤中と表示させるが、日付が変わると、出勤時のデータが昨日になる為)と表示するのが困難です。 複雑に組めば可能だとは思いますが、シンプルな方法で上記の内容を改善する方法を御存知の方は御教授いただければと思います。何卒、宜しくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
日付だけ見て判断するのは無理と思います。 出勤/退社など時間に関係するものは、日付+時間で管理し、今出勤中を判断する場合、その日および 時間が出勤/退社の範囲にあるかという条件で判断するしかないと思います。 あるいは、出勤/退社に出勤中のフラグを設けて、ON/OFFを判断し、フラグが立っているものは 出勤中にするとか?だた、出勤中と調査する時点が、いついつ日の何時に出勤している人という条件指定 の場合はフラグ方式は無理ですが..
その他の回答 (5)
- goronhoron
- ベストアンサー率22% (13/58)
この質問者は http://hp.submit.ne.jp/producer/show/27034 フリーでやっているほどの人。 こんな簡単な質問なんてするはずがありません。 釣りです。回答するだけ無駄です。
- superside0
- ベストアンサー率64% (463/719)
36時間連続勤務 といったケースにも対応できるように、汎用的に考えるなら 今日の出勤データとか昨日の出勤データだけを見るのでななく 出勤中の人 = 出勤記録はあるが、それに対応した退勤記録がない人 ではないでしょうか。
- nak777r
- ベストアンサー率36% (49/136)
過去の質問知らないのでデータベースがどういうレイアウトかわかりませんが 単純に、 最後の出勤日時 < 最後の退社日時 なら 退社 最後の出勤日時 > 最後の退社日時 なら 出勤 でないでしょうか
- yambejp
- ベストアンサー率51% (3827/7415)
>出勤中の人の所に出勤中(略)と表示するのが困難 どこで詰まっているかわかりませんが、単純な話では? NOW() BETWEEN start_datetime AND end_datetime とするならたとえばstart_datetimeが「2012/04/20 21:00:00」、 end_datimeが「2012/04/21 01:00:00」だとすれば かりにNOW()が「2012/04/20 23:30:00」でも「2012/04/21 00:30:00」でも ヒットします
- adobe_san
- ベストアンサー率21% (2103/9759)
「始業開始前1時間を日の勤怠スタートで24時間カウント」では?
補足
回答ありがとうございます。 その場合、マクドナルドのような24時間営業で各従業員で始業時間が違う場合、困りませんか?
お礼
ありがとうございます。手がかりとして作成し直します。