【问题标题】:How to get the data using >= AND <= in a 12hr time format in php/mysql?如何在 php/mysql 中使用 >= AND <= 以 12 小时时间格式获取数据?
【发布时间】:2013-08-30 11:09:08
【问题描述】:

我想获取从 12:00:00 PM 到 02:00:00 PM 的时间,但是当我使用 start_time &gt;= '12:00:00' AND end_time &lt;= '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。我的数据库中 start_time 和 end_time 的数据类型也是time。什么是检索数据的正确方法以及我应该在我的数据库中使用什么数据类型。谢谢!

【问题讨论】:

  • @Hamza:虽然你忘记了F 中的RTM:D
  • @TobiasKun I know :D
  • @Leonard:为什么不使用h:i:s(一天24 小时)格式?这会对你有很大帮助;)
  • 总是总是 总是对数据库使用 24 小时。如果您需要在用户界面上显示 12 小时,则在显示时将其转换,但在 DB 上将其保留为 24 小时。

标签: php mysql codeigniter datetime


【解决方案1】:

假设您在数据库中使用 DATETIME-format 作为数据类型,这应该会对您有所帮助:

$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')));

【讨论】:

  • 老实说,我不使用datetime。我有一个时间选择器,你只能选择time,日期被禁用。
  • 无法检索12:00:00 PM02:00:00 PM的数据
  • 我的时间选择器来自tarruda.github.io/bootstrap-datetimepicker,我有这个配置:codejaw.com/nzg3vsg
  • 并且您在表单提交到您的查询后以这种格式h:i:s / 14:00:00 传递这两个值?您能否向我展示您的数据库中包含开始时间和结束时间的示例行?
  • 是的,它是h:i:s: 格式,但我担心时间不会转换为14:00:00,但我确实使用h:i:s:
猜你喜欢
  • 2022-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-21
  • 1970-01-01
  • 1970-01-01
  • 2012-02-14
  • 2015-06-16
相关资源
最近更新 更多