MySQL datetime 월별 GROUP BY

1 개요[ | ]

MySQL datetime 월별 GROUP BY
  • 문제상황: 워드프레스 글의 post_date 기준 월별 통계를 내고 싶다.
  • DATE_FORMAT(post_date,'%Y-%m') 또는 MID(post_date,1,7)GROUP BY

2 실습환경[ | ]

MySQL
Copy
mysql> SELECT COUNT(*) FROM wp_posts;
+----------+
| COUNT(*) |
+----------+
|     4036 |
+----------+
MySQL
Copy
mysql> SELECT ID, post_date FROM wp_posts ORDER BY post_date LIMIT 2;
+----+---------------------+
| ID | post_date           |
+----+---------------------+
|  1 | 2012-01-01 12:30:58 |
|  2 | 2012-01-01 14:05:09 |
+----+---------------------+
MySQL
Copy
mysql> SELECT ID, post_date FROM wp_posts ORDER BY post_date DESC LIMIT 2;
+------+---------------------+
| ID   | post_date           |
+------+---------------------+
| 7313 | 2013-08-03 19:47:04 |
| 5354 | 2013-08-03 19:35:15 |
+------+---------------------+
→ 전체 포스팅 수는 4036건
→ 게시일시(post_date)는 2012-01-01 ~ 2013-08-03

3 방법 1: DATE_FORMAT() 함수[ | ]

MySQL
Copy
mysql> SELECT DATE_FORMAT(post_date,'%Y-%m') m, COUNT(*) FROM wp_posts GROUP BY m;
+---------+----------+
| m       | COUNT(*) |
+---------+----------+
| 2012-01 |      128 |
| 2012-02 |      115 |
| 2012-03 |      121 |
... (생략)
| 2013-07 |      322 |
| 2013-08 |       32 |
+---------+----------+

4 방법 2: MID() 함수[ | ]

MySQL
Copy
mysql> SELECT MID(post_date,1,7) m, COUNT(*) FROM wp_posts GROUP BY m;
+---------+----------+
| m       | COUNT(*) |
+---------+----------+
| 2012-01 |      128 |
| 2012-02 |      115 |
| 2012-03 |      121 |
... (생략)
| 2013-07 |      322 |
| 2013-08 |       32 |
+---------+----------+

5 방법 3: MONTH() 함수[ | ]

MySQL
Copy
mysql> SELECT CONCAT(YEAR(post_date), '-', MONTH(post_date)) ym, COUNT(*) FROM wp_posts GROUP BY ym;
+---------+----------+
| ym      | COUNT(*) |
+---------+----------+
| 2012-1  |      128 |
| 2012-10 |      161 |
| 2012-11 |      159 |
| 2012-12 |      205 |
| 2012-2  |      115 |
| 2012-3  |      121 |
... (생략)
| 2013-7  |      322 |
| 2013-8  |       32 |
+---------+----------+

6 같이 보기[ | ]

  • CentOS MySQL 설치
    RHEL5.x 버전에서 MySQL-5.5.45 버전 설치시, /usr/bin/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data 와 같이 설정해 주지 않으면 정상 동작하지 않는 경우가 있었습니다. 확인 바랍니다.
  • MySQL BigDump
    'MySQL server has gone away'는 백업본 전체의 크기가 크다기 보다는, 특정 쿼리문 1개의 크기가 너무 커서 처리를 못하는 거라서, 이런 도구로 해결하기는 어려울 것 같습니다.J Jmnote
  • MySQL STRICT TRANS TABLES
    @Jmnote 감사합니다.~ John Jeong
  • MySQL 외래키 옵션 변경
    진짜 필요한 거였는데 이런걸 이제야 알다니 정말 감사합니다. 문태부
  • MySQL 컬럼명으로 테이블 찾기
    회사 가서 쓰기 좋은 코드 1추 Stly3466