PHP根据时间获取正确的数据库记录

时间:2018-06-11 00:30:51

标签: php mysql codeigniter

请尝试使用单选按钮从数据库中获取任务,但我没有获得正确的记录,我使用Codeigniter

这是我的代码:

switch(strtolower($this->input->post('tasksfilter'))){
    case "overdue":
        $query = array("task_accomplish_date <=" => time());
        break;
    case "today":
        $query = array("task_accomplish_date <=" => strtotime("today midnight"));
        break;
    case "tomorrow":
        $query = array("task_accomplish_date <=" => strtotime("tomorrow midnight"));
        break;
    }
$this->data['result'] = $this->crud->read_where("tasks", $query)->result();

这也是我的read_where功能:

public function read_where($table, $cond, $limit = null, $offset = null){
        return $this->db->get_where($table, $cond, $limit, $offset);
    }

NB * task_accomplish_datevarchar字段,包含timestamp个值 感谢您的帮助

1 个答案:

答案 0 :(得分:0)

问题在于您总是在寻找小于或等于特定日期的日期。因为“今天”总是小于“明天”,你自然也会在答案中得到“今天”。

如果task_accomplish_date列中的值始终是相关日期的午夜,则可以使用相等运算符。如果使用除午夜以外的某些“时间”,那么我将不得不修改答案。以下假定值始终是午夜。

这个答案还假设你只想要“明天”而不是任何日子,即后天。

$findDay = strtotime("today");
switch (strtolower($this->input->post('tasksfilter')))
{
    case "overdue":
        $findDay -=  86400; //subtract one days worth of seconds
        break;
    case "tomorrow":
        $findDay += 86400; //add a day to "today"
        break;
}
$query = array("task_accomplish_date == " => $findDay);
$this->data['result'] = $this->crud->read_where("tasks", $query)->result();