我从MySQL数据库中选择特定行并获得以下列表:
2017-07-28
2017-07-28
2017-07-28
2017-07-28
2017-07-31
2017-07-31
2017-08-01
2017-08-01
2017-08-02
2017-08-02
2017-08-02
2017-08-03
2017-08-04
我想算一下每月有多少天不同,在这种情况下我希望得到以下结果:
2017-07: 2 different days
2017-08: 4 different days
我试图在数组的帮助下做到这一点,但没有成功。
答案 0 :(得分:1)
使用:
SELECT DATE_FORMAT(date_col, '%Y-%m') AS year_month
, COUNT(DISTINCT DAY(date_col)) AS cnt
FROM your_table
GROUP BY DATE_FORMAT(date_col, '%Y-%m');
工作原理:
year-month
部分COUNT
来计算每个组中的出现次数DISTINCT
只能获得不同的日期值答案 1 :(得分:1)
E.g。
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,dt DATE NOT NULL
);
INSERT INTO my_table (dt) VALUES
('2017-07-28'),
('2017-07-28'),
('2017-07-28'),
('2017-07-28'),
('2017-07-31'),
('2017-07-31'),
('2017-08-01'),
('2017-08-01'),
('2017-08-02'),
('2017-08-02'),
('2017-08-02'),
('2017-08-03'),
('2017-08-04');
SELECT DATE_FORMAT(dt,'%Y-%m') yearmonth, COUNT(DISTINCT dt) total FROM my_table GROUP BY yearmonth;
+-----------+-------+
| yearmonth | total |
+-----------+-------+
| 2017-07 | 2 |
| 2017-08 | 4 |
+-----------+-------+