LIKE предназначен только для сравнения строк с шаблоном, который может содержать символы подстановки;Name LIKE 'Smith%'
- возвращает все, что начинается со Смита.
МЕЖДУ предназначен для сравнения чисел или дат, чтобы определить, попадают ли они в диапазон. Между включает начальные и конечные значения. BETWEEN 1 and 5
возвращает любые записи, которые имеют 1,2,3,4 или 5
Они не могут использоваться вместе, вы используете одну или другую.
Даты похожи на десятичные числа;временная часть даты может означать, что дата выходит за пределы диапазона. Точно так же, как 5.5 не «между 1 и 5», время даты 2019-09-29 12:34 не «между 2019-09-20 и 2019-09-29» - только в полночь 29-го числаассортимент. По этой причине я предпочитаю использовать> и <с диапазонами дат: </p>
SELECT * FROM `table_name`
WHERE
`date_time` >= '2019-09-20' AND
`date_time` < '2019-09-30'
Сюда входят все записи с 20-го по 29-е, независимо от времени 29-го. Это более ясно и ясно, чем между. Другой ответ, который имеет BETWEEN ... 23:59:59
, также пытается охватить все, что меньше 30-го, но это не такая мудрая привычка, потому что однажды время может иметь миллисекунды и т. Д.
Это все равно, что сказать BETWEEN ... AND 9.9
потому что вы ищете значения меньше 10 .. но. Один день чтения - это значение 9,99, и даже если вы использовали BETWEEN ... AND 9.99
, один день будет 9,999 и так далее. Если вы хотите «меньше 10», используйте < 10
Попробуйте использовать только МЕЖДУ для диапазонов значений, которые, как вы знаете, являются дискретными