Drop table if exists timeTable; CREATE TABLE timeTable ( year YEAR(4), month INT(2) UNSIGNED ZEROFILL, day INT(2) UNSIGNED ZEROFILL ); INSERT INTO timeTable VALUES(2001,1,1), (2002,6,20), (2003,5,30), (2004,2,2), (2005,4,23), (2006,3,23), (2002,6,30); /* * 看看每个月发生的不同的天数 * BIT_COUNT(N) 返回在参数 N 中设置的比特位数量。 */ SELECT year, month, BIT_COUNT(BIT_OR(1<<day)) AS days FROM timeTable GROUP BY year,month; /* +------+-------+------+ | year | month | days | +------+-------+------+ | 2001 | 01 | 1 | | 2002 | 06 | 1 | | 2003 | 05 | 1 | | 2004 | 02 | 1 | | 2005 | 04 | 1 | | 2006 | 03 | 1 | +------+-------+------+ 6 rows in set (0.02 sec) */