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

use*_*692 17 mysql

在mySQL中,我想返回start_date当前年份内的记录计数(如2012年,不在最近一年的时间段内)和(作为单独的查询)计数来自去年(2011年的情况就像现在一样).

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

关于如何形成这些查询的帮助将非常感激.

pix*_*ine 34

SELECT COUNT(*)
 FROM TABLE1
 WHERE YEAR(START_DATE) = YEAR(CURDATE()); 
Run Code Online (Sandbox Code Playgroud)

  • 不确定这是一个好的决定.如果您在START_DATE有索引,它将无效.最好在正确的条件下做好所有准备工作.像这样的东西START_DATE> DATE_FORMAT(NOW(),'%​​Y-01-01 00:00:01') (3认同)

Yog*_*ngh 8

您可能希望使用YEAR函数从日期获取YEAR并使用相同的值.

 SELECT COUNT(*)
 FROM TABLE1
 WHERE YEAR(START_DATE) = 2012;
Run Code Online (Sandbox Code Playgroud)

与上一年分开的查询:

 SELECT COUNT(*)
 FROM TABLE1
 WHERE YEAR(START_DATE) = 2011;
Run Code Online (Sandbox Code Playgroud)

要明智地计算年份:

 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;
Run Code Online (Sandbox Code Playgroud)

  • `年份(START_DATE)=年份(现在())` (2认同)