返回当前年份的所有mySQL记录

时间:2012-11-27 19:55:56

标签: mysql

在mySQL中,我想返回当前年份内start_date的记录计数(如2012年,不在最近一年的时间段内)和(作为单独的查询) )上一年的记录数(2011年的现状)。

我的开始日期如下:2012-12-02。我正在使用PHP。

非常感谢我对如何形成这些查询的帮助。

3 个答案:

答案 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'