简体   繁体   English

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

[英]Calculate working hours of specific month of each employee

I'm using symfony3, I have an entity called Presence to register entry time and out time of each employee. 我正在使用symfony3,我有一个名为Presence的实体来注册每个员工的进入时间和离开时间。 The registration works good but I'd like to calculate the total of working hours of specific month. 注册效果很好,但我想计算特定月份的总工作时间。

In fact , I use this method to calculate the total of working hours by day: 实际上,我使用这种方法来按天计算总工作时间:

 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");
}

But I didn't reach to calculate the total of working hours by month. 但是我没有计算出每个月的总工作时间

/**
* Presence
*
* @ORM\Table(name="presence")
* @ORM\Entity(repositoryClass="AppBundle\Repository\PresenceRepository")
*/
class Presence
{
/**
 * @var int
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @var \DateTime
 *
 * @ORM\Column(name="date_presence", type="date")
 */
private $date;

/**
 * @var \DateTime
 *
 * @ORM\Column(name="entry_time_first_half", type="time")
 */
private $entryTimeFirstHalf;

/**
 * @var \DateTime
 *
 * @ORM\Column(name="out_time_first_half", type="time")
 */
private $outTimeFirstHalf;

/**
 * @var \DateTime
 *
 * @ORM\Column(name="entry_time_second_half", type="time")
 */
private $entryTimeSecondHalf;

/**
 * @var \DateTime
 *
 * @ORM\Column(name="out_time_second_half", type="time")
 */
private $outTimeSecondHalf;

/**
 * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Employee")
 * @ORM\JoinColumn(nullable=false, onDelete="CASCADE")
 */
private $employee;

Try this SQL: 试试这个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`

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM