Ваш результат нулевой, потому что вы противоречите себе в утверждении where.Если вы присоединяетесь к co.userid, совпадающему с диапазоном времени проверки, который находится внутри диапазона времени проверки NOT EXISTS, это означает, что он существует.
Вы ищете пользователей, регистрирующих эту регистрацию в этом диапазоне
WHERE co.checktime >= '2017-12-28 06:15:00' and co.checktime <= '2017-12-28 07:45:00'
И предыдущий временной диапазон включен в выбор, который он оценивает в функции НЕ СУЩЕСТВУЕТ.Следовательно, эти userId всегда будут существовать.
WHERE co.checktime > '2017-12-28 06:15:00' and co.checktime <='2017-12-28 23:15:00'
Таким образом, выполнение
NOT EXISTS (SELECT co.userid from checkinout WHERE co.checktime > '2017-12-28 06:15:00' and co.checktime <='2017-12-28 23:15:00');
В последнем «и» всегда будет ложным и не даст результатов вашему выбору.
Надеюсь, это поможет, и я понял вашу проблему!