時間計算2
◆actionで修正
public function getWorkTime($format = 'Y-m-d H:i:s') { $start = $this->apply_start_time;//出勤時間 $end = $this->apply_end_time;//退勤時間 $sum = $end - $start; $sum2 = gdate($format, $sum); $res = $this->rest_time; //休憩時間 $over = $this->over_rest_time;//規定外休憩 }
select apply_end_time - apply_start_time - rest_time - over_rest_time from trn_work_time where id = 番号
【SELECT】
$c = new Criteria(); $c->clearSelectColumns(); $c->addSelectColumn(apply_end_time - apply_start_time - rest_time - over_rest_time); ※どれかの値がNULLなら0を返す。
【WHERE】
$c = new Criteria(); $c->add(id , 40); $c->addSelectColumn(apply_end_time); $c->addSelectColumn(apply_start_time); $c->addSelectColumn(rest_time); $c->addSelectColumn(over_rest_time);
総時間を取得
カスタムSQLを使いその日の勤務時間計を返す
public static function sumWorkTime() { $con = Propel::getConnection(); $query = " select apply_end_time - apply_start_time - rest_time - over_rest_time FROM trn_work_time WHERE id=42"; $sum = $con->prepareStatement($query); $result= $sum->execute(); return populateObjects($result); }
完成版
$c = new Criteria(); $c->addSelectColumn(self::CLINIC_ID); $c->addAsColumn('COUNT' , 'COUNT(*)'); $rs = self::doSelectRS($c); $rs->setFetchMode(ResultSet::FETCHMODE_ASSOC); SELECT SUM(COALESCE((apply_end_time - apply_start_time)::time,'00:00'::time) - COALESCE (rest_time,'00:00'::time) - COALESCE (over_rest_time,'00:00'::time)) as sum_work_time FROM work_time WHERE user_id=10 GROUP BY user_id;