如何在php中2次之间搜索查询

时间:2019-03-07 06:49:34

标签: php sql codeigniter

我需要一天在2次之间搜索一行 例如

当前时间为 13.30点

第一次是 13:00点

第二次是 14:00点

如果当前时间在第一次和第二次之间,则返回true,否则返回false

我编写一些这样的代码:

$today = date("Y-m-d");

$this->db->query("select date, in, out from absent where date='$today' and id_user='120'")->result(); /* the result is 3 rows 2019-3-7, 13:00, 14:00 2019-3-7, 09.00, 12.00 2019-3-7, 15:00, 17:00 */

我只需要一行当前时间在第一次和第二次之间的

3 个答案:

答案 0 :(得分:1)

您可以使用以下代码:

$this->db->select('date, in, out');
$this->db->from('absent');
$this->db->where('date', $today);
$this->db->where('user_id', '120');
$this->db->where('in >='. $currentTime);
$this->db->where('out <='. $currentTime);
return $this->db->get()->result_array();

希望它对您有帮助。

答案 1 :(得分:1)

像这样(如果您有一个日期时间字段):

$firstTime = (new DateTime)->format('H:i:s');
$secondTime = (new DateTime)->modify('+1 hours +2 minutes +3 seconds')->format('H:i:s');


$this->db->query("SELECT `date`, in, out FROM absent WHERE TIME(`date`) >= '$firstTime' AND TIME(`date`) <= '$secondTime' AND id_user='120'");

日期是MySQL中的保留字,因此您必须对其进行转义。您可以为日期时间字段的任何部分执行此操作,MONTH()DAY()YEAR()TIME()HOUR()等。

然后,您只需在日期H:i:s和一些逻辑上匹配日期格式即可。

目前尚不清楚,但是您可能需要这样的内容,因为您似乎有一个日期字段和两个带有“小时”和“分钟”的字段?

$today = new DateTime;

$date = $today->format('Y-m-d');
$in = $today->format('H:i');
$out = $today->modify('+2 hours')->format('H:i');


$this->db->query("SELECT `date`, in, out FROM absent WHERE `date` = '$date' AND in >= '$in' AND out <= '$out' AND id_user='120'");

在这种情况下,我个人将输入和输出完整的datetime字段,然后可以使用上面的日期函数,并且可以消除一列,并处理输入和输出连接日期的值。

答案 2 :(得分:-1)

尝试这样

首先,将全部三次转换为strtotime()

第二,result()总是会给您多于一行。使用row()仅获得一条记录

$current = strtotime('time-one');
$first_time = strtotime('time-two');
$second_time = strtotime('time-three');
$date = date('Y-m-d');    

查询

$this->db->select('*');
$this->db->from('table');
$this->db->where('date', $date);
$this->db->where('user_id', '120');
$this->db->where('time >='. $first_time);
$this->db->where('time <='. $second_time);
return $this->db->get()->row();