猿问

时间搜索功能在 PHP 中无法正常工作

我正在尝试向我的 PHP 站点添加时间搜索,该站点已经有日期搜索并且工作正常。但是当我尝试添加时间搜索时,它无法正常工作。它似乎正在发送数据但没有影响很大。


例如,当我选择 13:00 作为开始时间和 16:00 作为结束时间时,它显示了那几天的所有记录,不关心时间。但是如果我为开始和结束选择相同的时间,它什么都不显示。选择一个高于结束时间的时间作为开始时间,同样不显示。


//search_model.php

if(!empty($data['start'])){

$this->db->where('Date(requests.confirmed_at) >=', date("Y-m-d", strtotime($data['start'])));

}

if(!empty($data['end'])){

$this->db->where('Date(requests.confirmed_at) <=', date("Y-m-d", strtotime($data['end'])));

}

if(!empty($data['starttime'])){

$this->db->where('Date(requests.confirmed_at) >=', date("H:i", strtotime($data['starttime'])));

}

if(!empty($data['endtime'])){

$this->db->where('Date(requests.confirmed_at) <=', date("H:i", strtotime($data['endtime'])));

}



//search_view.php

<div class="form-group" id="data_5">

<label class="col-sm-2 control-label font-normal"><?php echo lang('select_date_range');?></label>

<div class="col-sm-10">

<div class="input-daterange input-group" id="datepicker">

<input type="text" class="form-control-sm form-control" name="start" value="<?php echo date("Y-m-d")?>"/>


<div class="input-group clockpicker">

<input type="text" class="form-control" value="" name="starttime" id="starttime">

<span class="input-group-addon">

<span class="glyphicon glyphicon-time"></span>

</span>

</div>



<span class="input-group-addon">to</span>

<input type="text" class="form-control-sm form-control" name="end" value="<?php echo date("Y-m-d")?>" />


<div class="input-group clockpicker">

<input type="text" class="form-control" value="" name="endtime" id="endtime">

<span class="input-group-addon">

<span class="glyphicon glyphicon-time"></span>

</span>

</div>

在视图到模型之间发布数据没有问题。所以我认为这是关于模型,但我无法解决它。任何帮助将不胜感激。谢谢。


慕娘9325324
浏览 182回答 1
1回答

犯罪嫌疑人X

在 MySQL 中,“Date”函数将仅返回日期时间字符串的日期,因此Date('2019-08-24 10:29:00')将返回“2019-08-24”。查看您的代码,前两个块是根据日期查看日期。接下来的两个块是根据日期查看时间,这就是问题所在。如需参考,请参阅:https&nbsp;:&nbsp;//dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html(注意这是针对 MySQL 5.7,请确保从您的版本中引用文档正在使用)。在上面的这种情况下,如果在按时间过滤数据时不需要日期约束,则可以使用上面文档中的 TIME() 函数。
随时随地看视频慕课网APP
我要回答