使用 Codeigniter 的活动记录查询构建方法对 TIME 类型列中的秒数求和

问题描述 投票:0回答:5

我想对具有特定 WHERE 标准的数据库列进行求和,然后将其显示在网页上,但我不确定如何执行此操作。

这是迄今为止我在控制器中的功能。

public function get_hours() {
    $user_email = $this->session->userdata('USER_EMAIL');
    $this->db->where('USER_EMAIL', $user_email);
    $this->db->select_sum('USER_WORK_HOURS');
    $data = $this->db->get('user_hours');
    $hours = $data->row()->USER_WORK_HOURS;
    echo $hours;
}

这会将我带到一个空白页面并且不显示任何内容。

我也尝试回显 $data,但收到错误消息,指出无法将其转换为字符串。

我尝试求和的列是 TIME 类型列。

php mysql codeigniter time sum
5个回答
2
投票

试试这个:

public function get_hours()
{

$user_email = $this->session->userdata('USER_EMAIL');

$this->db->select('SEC_TO_TIME( SUM( TIME_TO_SEC( `USER_WORK_HOURS` ) ) ) AS totalHours'); 
$this->db->where('USER_EMAIL', $user_email);
$hours= $this->db->get('user_hours')->row()->totalHours;

echo $hours;

} 

1
投票

据我所知,你不能直接在mysql中的

SUM()
数据类型上调用
TIME
。您必须先使用
TIME_TO_SEC()
函数将其转换为数字,然后再将其转换回
TIME

我将为您提供有关此方法的直接 SQL 示例:

SELECT SEC_TO_TIME( SUM( TIME_TO_SEC( `USER_WORKS_HOUR` ) ) ) AS timeSum
   FROM YourTableName WHERE `USER_EMAIL` = $email

也许您可以先在 phpmyadmin 上测试 SQL 查询,然后再在实际应用程序中运行。干杯!


0
投票

试试这个,不确定,但可能有用。

public function get_hours()
{

$user_email = $this->session->userdata('USER_EMAIL');

$this->db->where('USER_EMAIL', $user_email);

$this->db->select_sum('USER_WORK_HOURS');

$data = $this->db->get('user_hours');

$hours = $data->row();

echo $hours->USER_WORK_HOURS;

} 

0
投票

试试这个

public function get_hours()
{


    $user_email = $this->session->userdata('USER_EMAIL');

    $this->db->where('USER_EMAIL', $user_email);

    $this->db->select_sum('USER_WORK_HOURS');

    $data = $this->db->get('user_hours');

    $hours = $data->result();

    echo $hours;

} 

0
投票

试试这个

public function get_hours()
{

$user_email = $this->session->userdata('USER_EMAIL');

$this->db->select('SEC_TO_TIME( SUM( TIME_TO_SEC( `USER_WORK_HOURS` ) ) ) AS workduration '); 
$this->db->where('USER_EMAIL', $user_email);
$query = $this->db->get('user_hours');
$hours = $query->result();

echo $hours[0]->workduration;
}
© www.soinside.com 2019 - 2024. All rights reserved.