Я искал Google и SO за последние 25 минут, чтобы узнать, как сделать следующее в MySQL.Подсчет строк на дату в диапазоне дат
настоящее время у меня следующий запрос (отправляемые PHP):
SELECT
COUNT(*),
`$db`.`crop`.`id` AS `crop`,
`$db`.`crop`.`harvest_date` AS `harvest_date`
FROM
`$db`.`crop`
WHERE
`$db`.`crop`.`harvest_date` BETWEEN $startDate AND $endDate
GROUP BY `$db`.`crop`.`harvest_date`
$startDate = 2012-01-01
$endDate = 2013-07-01
Я пытаюсь найти все строки, которые имеют harvest_date между датами начала и окончания, а затем подсчитать количество строк, которые падают в тот же день. Однако, похоже, я не получаю никаких результатов. Запрос не терпит неудачу, он просто ничего не возвращает. Может ли кто-нибудь указать мне в правильном направлении/сказать мне, где я ошибался?
EDIT: Нашел проблему. Как отметил Майкл ниже, даты не принимались как даты, а как цифры. Я решил это, добавив «до и после startDate и endDate в запросе.
Запрос должен быть сбой. Ваши литералы о дате должны быть строками с одним кавычком.как в '$ startDate = '2012-01-01'' –
Когда вы группируете' harvest_date', вы должны использовать какую-то агрегатную функцию (например, 'min()', 'max()' или 'group_concat () ') для' id'. – cars10m
Какой тип 'harvest_date'? –