Я бы порекомендовал:
$date = "2020-04";
$sql = "SELECT * FROM table WHERE datum = concat(?, '-01')", $date;
Основная идея состоит не в том, чтобы не применять функции (либо функции даты, либо сопоставление с образцом) для искомого столбца, поскольку это препятствует работе базы данных. в полной мере использовать индекс для этого столбца (и это включает в себя ненужные дополнительные вычисления для каждой строки). Вместо этого вы можете легко сгенерировать точное значение для поиска с помощью конкатенации переменной в запросе.
В более типичном случае, когда datum
имеет реальные компоненты дня и времени, и вы хотите фильтровать по данный месяц вы должны сделать:
SELECT *
FROM table
WHERE datum >= concat(?, '-01') AND datum < concat(?, '-01') + interval 1 month
Обратите внимание, что это предполагает, что вы используете MySQL, потому что синтаксис предлагает это. Другие базы данных имеют эквивалентные способы построения дат из строк.