Невозможно получить данные между двумя временными диапазонами в Codeigniter - PullRequest
0 голосов
/ 10 июля 2019

Я хочу отобразить все записи из таблицы, в которую пользователь ввел время начала и время окончания лежит между столбцом базы данных start_time и end_time. Я использовал между, но это не дает надлежащих результатов. Строки выбираются, только если мои start_time или end_time соответствуют значениям базы данных. Например, только если я введу 07:00:00 или 21:00:00 в поле времени начала или окончания времени соответственно.

Структура базы данных:

id              int(11) Autoincrement
start_time  datetime NULL    
end_time    datetime NULL

Данные базы данных:

Start_time                end_time
2019-07-04 07:00:00 2019-07-04 21:00:00

SQL-запрос:

SELECT *
FROM `hours`
WHERE TIME(start_time) BETWEEN "07:15:00" and "20:00:00"
AND TIME(end_time) BETWEEN "07:15:00" and "20:00:00"

Запрос Codeigniter:

$this->db->where('TIME(start_time) BETWEEN "'. date('H:i:s',strtotime($start_time)). '" and "'. date('H:i:s',strtotime($end_time)).'"');
$this->db->where('TIME(end_time) BETWEEN "'. date('H:i:s',strtotime($start_time)). '" and "'. date('H:i:s',strtotime($end_time)).'"');

ссылка: http://sqlfiddle.com/#!9/958b05/6

1 Ответ

0 голосов
/ 10 июля 2019

Давайте рассмотрим этот метод:

SELECT *
FROM `hours`
WHERE 36000 >= TIME_TO_SEC(TIME(start_time))
AND 64800 <= TIME_TO_SEC(TIME(end_time));

http://sqlfiddle.com/#!9/958b05/12

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

SELECT *
FROM `hours`
WHERE "10:00:00" >= TIME(start_time)
AND "18:00:00" <= TIME(end_time);

Таким образом, «10:00:00» - время начала, а «18:00:00» - время окончания при вводе пользователем, и используйте его для поиска в start_time.и значение end_time.Если пользовательские данные совпадают или находятся между start_time и end_time, он вернет значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...