我一直在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行,再算上那年秋天的行数在同一天。但是,我似乎没有得到任何结果。查询不会失败,它只是不会返回任何内容。任何人都可以指出我正确的方向/告诉我我错了吗?
编辑:发现问题。正如Michael在下面指出的那样,日期并没有像日期那样通过,而是数字。我通过在查询中的startDate和endDate之前和之后添加了解决方案。
应该为查询失败。你的日期文字需要用单引号字符串。如''startDate ='2012-01-01'' –
当您通过'harvest_date'进行分组时,您必须使用某种聚集函数(例如'min()','max()'或'group_concat )''为'id'。 – cars10m
哪种类型是'harvest_date'? –