计算每个员工特定月份的工作时间



我正在使用symfony3,我有一个名为Presence的实体来记录每个员工的入场时间和下班时间。 注册效果很好,但我想计算特定月份的总工作时间。

事实上,我用这个方法来计算每天的总工作时间:

public function hoursByDay()
{
$interval1 = $this->entryTimeFirstHalf->diff($this->entryTimeFirstHalfr);
$interval2 = $this->entryTimeSecondHalf->diff($this->outTimeSecondHalf);
$e = new DateTime('00:00');
$f = clone $e;
$e->add($interval1);
$e->add($interval2);
return $f->diff($e)->format("%H:%I");
}

但我没有按月计算总工作时间。

/**
* Presence
*
* @ORMTable(name="presence")
* @ORMEntity(repositoryClass="AppBundleRepositoryPresenceRepository")
*/
class Presence
{
/**
* @var int
*
* @ORMColumn(name="id", type="integer")
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var DateTime
*
* @ORMColumn(name="date_presence", type="date")
*/
private $date;
/**
* @var DateTime
*
* @ORMColumn(name="entry_time_first_half", type="time")
*/
private $entryTimeFirstHalf;
/**
* @var DateTime
*
* @ORMColumn(name="out_time_first_half", type="time")
*/
private $outTimeFirstHalf;
/**
* @var DateTime
*
* @ORMColumn(name="entry_time_second_half", type="time")
*/
private $entryTimeSecondHalf;
/**
* @var DateTime
*
* @ORMColumn(name="out_time_second_half", type="time")
*/
private $outTimeSecondHalf;
/**
* @ORMManyToOne(targetEntity="AppBundleEntityEmployee")
* @ORMJoinColumn(nullable=false, onDelete="CASCADE")
*/
private $employee;

试试这个 SQL:

SELECT `employee_id`, SUM( TIMESTAMPDIFF( HOUR, `entry_time_first_half`, `out_time_second_half` )) 
FROM `presence`
WHERE MONTH(`date`) = 7 AND YEAR(`date`) = 2018
GROUP BY `employee`

相关内容

  • 没有找到相关文章

最新更新