如何在php / mysql中以12小时的时间格式使用> = AND< =获取数据?

时间:2013-08-30 11:09:08

标签: php mysql codeigniter datetime

我希望从下午12:00:00到02:00:00 PM获得时间,但是当我使用start_time >= '12:00:00' AND end_time <= '02:00:00'时它不起作用。到目前为止我有这个代码。
注意:我正在使用Code Igniter。

    $start =  date("g:i:s", strtotime($this->input->post('start')));
    $end =  date("g:i:s", strtotime($this->input->post('end')));
    $date_reserve =  $this->input->post('date_reserve');

    $sql = "SELECT materialID FROM schedule WHERE date_reserve = ? AND start_time >= ? AND end_time <= ?";
    $query = $this->db->query($sql,array($date_reserve,$start,$end));

我使用g:i:s以12小时的格式对其进行格式化。当我尝试回应它时,给我12:00:0002:00:00它不会得到AM/PM。而且我的DB中的start_time和end_time的数据类型是time。检索数据的正确方法是什么,以及我应该在数据库中使用哪种数据类型。谢谢!

1 个答案:

答案 0 :(得分:0)

假设您在数据库中使用DATETIME - 格式作为数据类型,这可以帮助您:

$start =  date("h:i:s", strtotime($this->input->post('start')));
$end =  date("h:i:s", strtotime($this->input->post('end')));
...
$sql = "SELECT materialID FROM schedule WHERE date_reserve = ? AND TIME(start_time) >= ? AND TIME(end_time) <= ?";

修改 因此,如果您使用TIME-format,则只需更改要插入的值的格式:

$start =  date("h:i:s", strtotime($this->input->post('start')));
$end =  date("h:i:s", strtotime($this->input->post('end')));