我想了解过去三个月的所有评估。所以这应该算作当前和前两个月的单独
像本月的Count1 50一样 计数2 100一个月回来 两个月后计数2 50SELECT Count(AssessmentID)
from AssessmentListing
WHERE (STR_TO_DATE(`AssessmentSubmittedDatetime`, '%d-%b-%Y %I:%i %p') >=
DATE_FORMAT(NOW(), '%Y' ))
答案 0 :(得分:0)
与评论中提及的@Jarlh一样,您可以使用“提取”功能从日期列中提取月份,并使用该值对结果进行分组。
select EXTRACT(MONTH FROM AssessmentSubmittedDatetime) as _month,
Count(AssessmentID)
from AssessmentListing
WHERE (STR_TO_DATE(`AssessmentSubmittedDatetime`, '%d-%b-%Y %I:%i %p') >=
DATE_FORMAT(NOW(), '%Y' ))
group by _month
答案 1 :(得分:0)
您不应将日期存储为字符串。如果你想要当前的月份和两个月,那么就像这样:
SELECT DATE_FORMAT(STR_TO_DATE(`AssessmentSubmittedDatetime`, '%d-%b-%Y %I:%i %p'), '%Y-%m') as yyyymm,
Count(*)
from AssessmentListing
WHERE STR_TO_DATE(`AssessmentSubmittedDatetime`, '%d-%b-%Y %I:%i %p') >= DATE_SUB(DATE_SUB(CURDATE(), INTERVAL 1 - DAY(CURDATE()), INTERVAL 2 MONTH)
GROUP BY yyyymm;
我不确定你的WHERE
条实际上是做什么的。但是比较字符串和日期可能不是你真正想要的。