我需要一天在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
*/
我只需要一行当前时间在第一次和第二次之间的
答案 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();