не может получить запись, которая существует между заданным временем в codeigniter - PullRequest
0 голосов
/ 17 июня 2020

Я хочу получить записи, которые существуют между заданным временем начала и временем окончания, время начала и время окончания будут предоставлены пользователем, я использую для этого следующий запрос:

$this->db->where('TIME(start) BETWEEN "' . date('H:i:s', strtotime($start_time)) . '" and "' . date('H:i:s', strtotime($end_time)) . '"');
                    $this->db->where('TIME(end) BETWEEN "' . date('H:i:s', strtotime($start_time)) . '" and "' . date('H:i:s', strtotime($end_time)) . '"');
$results = $this->db->get('class')->result();

столбец времени начала и окончания - это поле даты и времени:

например. в базе данных время начала: 2020-06-08 06:15:00 время окончания: 2020-06-08 09: 15: 00

1 Ответ

0 голосов
/ 17 июня 2020

@ user3653474 Вы можете использовать TIMEDIFF, чтобы проверить, находится ли указанное время между значениями двух столбцов или нет. Посмотрите, соответствует ли вам приведенный ниже запрос.

$start = date('H:i:s', strtotime($start_time)); // get time from date in desired format
$end   = date('H:i:s', strtotime($end_time));

// where $start is between column {start} and {end} AND $end is between column {start} and {end}
$sql   = "SELECT * FROM class 
          WHERE (TIMEDIFF('$start', TIME(start)) >=0 AND TIMEDIFF('$start', TIME(end)) <= 0) 
          AND (TIMEDIFF('$end', TIME(start)) >=0 AND TIMEDIFF('$end', TIME(end)) <= 0)"; 

$results = $this->db->query($sql)->result();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...