Как это (если у вас есть одно поле даты и времени):
$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'");
Лично в этом случае я бы сделал полными поля даты и времени входными и исходящими, затем вы можете использовать функции даты, как указано выше, и вы можете исключить один столбец и обрабатывать входящие и исходящие значения, которые соединяют дату.