Я использовал другой подход к требованию "между 6:30 и 7:30".В этом ответе я вычитаю 30 минут, а затем проверяю, является ли значение часа 6 или 7. Я выбрал этот подход как вариант сравнения строк.Я не знаю, работает ли он лучше, но это альтернативный подход.Приведение к метке времени необходимо для извлечения значения часа.
WHERE trunc(login_time) BETWEEN to_date('8/1/2018', 'mm/dd/yyyy') AND to_date('8/31/2018', 'mm/dd/yyyy')
AND extract(hour FROM cast(login_time-(30/60/24) as timestamp)) IN (6,7)
Если вы всегда будете запрашивать весь месяц, это может быть сокращено до
WHERE trunc(login_time, 'MONTH') = to_date('8/1/2018', 'mm/dd/yyyy')
AND extract(hour FROM cast(login_time-(30/60/24) as timestamp)) IN (6,7)