我正在使用codeigniter。我在计算一天的总工作时间。
所以我要做的是,当用户登录系统时,它会在表中插入登录时间,然后 is_active
状态将 1
. 像这样的
如果用户注销,那么它将更新注销时间和 is_active
状态将 0
.
如果同一个用户再次登录,那么它将插入新的登录时间
注销的过程相同。我可以计算两个日期之间的时间,但是在我的场景中,用户可以多次登录。
我正在显示记录的列表 is_active
状态为1。
模型
public function get_current_login(){
$this->db->select('*');
$this->db->from('tbl_employee');
$this->db->join('tbl_current_login','tbl_current_login.emp_id=tbl_employee.id');
//$this->db->where($where);
$this->db->where('is_active',1);
$query = $this->db->get();
$result = $query->result();
if($result)
{
return $result;
}
else
{
return 0;
}
}
上面的代码将显示用户列表,其中 is_active
状态为1。(我尚未共享视图和控制器代码)。
现在我要计算一天的总工作时间。我是否在正确的路径上插入和更新登录和注销时间?是可以用mysql计算还是必须用php?
3条答案
按热度按时间cwxwcias1#
mysql支持时间戳:
https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html
您可以使用它来给出两个日期时间之间的小时数或小数小时数
如果你想得到一个合理精确的小时数,你可以要求两次之间的秒数,并将结果除以3600
如果您正在编写报告,计算员工每周或每月工作的小时数,请按员工和周/月分组,并将小时数相加。使用year()函数和month()或week()函数将日期缩减为周或月
例子:
如果你想要每周的报告,就用周代替月
以下是一份报告,给出了每个日期的登录和注销时间以及当天的工作时间:
xmq68pz92#
你将得到秒的时间,可以转换成你的格式。
mzsu5hc03#
我通常计算从数据库获取数据后的时间。