如何在codeigniter中减去时间和日期?

时间:2015-12-16 06:39:43

标签: php mysql codeigniter

我正在将Bio-Metric数据上传到我的MYSQL数据库表。我正在使用PHP Codeigniter。在这里,我有一名员工的实时和非职业时间。但是员工可以登录并出去做一些工作并再次回来。所以我想要的是从我的数据库中选择他的第一个登录和他的最后注销。现在我有一个月的所有日子转储!

那么如何获取员工的第一次登录以及他最后一次注销?

我的表格如下:Datatable 现在EMP_ID是user-id,date_data是日期和条目包含他的输入或输出信息。

如果条目>> 100,则称其为intime,否则为logout

这是我的表架构:

CREATE TABLE IF NOT EXISTS `daily_data2` (
          `id` int(10) NOT NULL AUTO_INCREMENT,
          `emp_id` int(10) NOT NULL,
          `date_data` varchar(30) NOT NULL,
          `abc` varchar(10) NOT NULL,
          `def` varchar(10) NOT NULL,
          `entry` int(10) NOT NULL,
          `ghi` int(10) NOT NULL,
          PRIMARY KEY (`id`)
        ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3720 ;

那么如何过滤数据并获得我的第一次登录和最后一次注销?   这是我的数据:

data

1 个答案:

答案 0 :(得分:1)

此功能将从每个员工的数据库中返回一条记录。该记录将是过去24小时内的第一个和最后一个。您可以在descasc之间切换以获取最新或最旧的结果。您还可以将ORDER BY存储为@param并将其调用两次。

class YOUR_MODEL extends CI_Model {

public $time = '';

/**
 * @param $emp_id
 * getting the first & last login in the last 24 hours from the database.
 * results are limited to one and can be ordered by ASC, or DESC
 */
function get_attendance_history($emp_id) {

    $hours = $this->time = date('Y-m-d H:i:s', strtotime('-1 day', time()));
    //desc will print the newest records && asc the latest.
    $sql = "SELECT * FROM daily_data2 WHERE emp_id = '{$emp_id}' AND date_data > '{$hours}' ORDER BY `date_data` desc LIMIT 1";
    $result = $this->db->query($sql); //run the query
    print_r( $result->result_array() ); //debug the result
    //return $result->row()->emp_id; //for one record show..
    exit;

    }
}

控制器中的用法:

public function test() {

    $this->load->model('test_m');
    $emp_id = '33'; //your emp_id
    $rajan = $this->test_m->get_attendance_history($emp_id);

}