在mySQL中,我想返回当前年份内start_date
的记录计数(如2012年,不在最近一年的时间段内)和(作为单独的查询) )上一年的记录数(2011年的现状)。
我的开始日期如下:2012-12-02
。我正在使用PHP。
非常感谢我对如何形成这些查询的帮助。
答案 0 :(得分:33)
SELECT COUNT(*)
FROM TABLE1
WHERE YEAR(START_DATE) = YEAR(CURDATE());
答案 1 :(得分:8)
您可能希望使用YEAR函数从日期中获取YEAR并将其用作比较。
SELECT COUNT(*)
FROM TABLE1
WHERE YEAR(START_DATE) = 2012;
与上一年分开查询:
SELECT COUNT(*)
FROM TABLE1
WHERE YEAR(START_DATE) = 2011;
要明智地计算年份:
SELECT COUNT(b.YEAR), b.YEAR
FROM TABLE1 AS a JOIN
(SELECT DISTINCT YEAR(START_DATE) AS YEAR from TABLE1) AS b
ON YEAR(START_DATE) = b.YEAR
GROUP BY b.YEAR;
答案 2 :(得分:1)
两个建议:
您可以使用日期过滤数据:
select count(*) from tbl where start_date >= '2012-01-01'
或
select count(*) from tbl where start_date between '2012-01-01' and '2012-12-31'
此外,您可以使用year()
功能过滤数据:
select count(*) from tbl where year(start_date) = 2012
希望这有助于你
如果您使用的是PHP(或任何其他高级编程语言),您可以在运行时构建查询字符串以满足您的需求(例如,过滤不同年份的记录)。
要在2012年之前显示start_date
的记录数,只需更改where
条件:
select... where year(start_date) < 2012
或
select... where start_date < '2012-01-01'