Для хранения дат всегда следует использовать формат столбца DATETIME
, а не VARCHAR
. Вы всегда можете решить проблемы с презентацией (например, преобразование в европейский формат) на уровне приложения. Если бы это было так, вы можете просто GROUP BY DATE(paid)
, то есть
SELECT COUNT(id), paid
FROM `payments`
WHERE paid IS NOT NULL
GROUP BY DATE(paid)
Если ваш столбец равен VARCHAR
или TEXT
, вам необходимо преобразовать его в значение, по которому вы можете сгруппировать. Если формат DD-MM-YYYY
, вы можете просто использовать LEFT(paid, 10)
для извлечения части и группы даты, то есть
SELECT COUNT(id), paid
FROM `payments`
WHERE paid IS NOT NULL
GROUP BY LEFT(paid, 10)
Если ваши даты хранятся как D-M-YYYY
, вам нужно будет преобразовать их использование STR_TO_DATE
например,
SELECT COUNT(id), paid
FROM `payments`
WHERE paid IS NOT NULL
GROUP BY STR_TO_DATE(paid, '%e-%c-%Y')
Обратите внимание, что при преобразовании можно игнорировать временную часть значения, что исключает необходимость использования функции DATE
.