কম্পিউটার টিউটোরিয়াল

MySQL에서 특정 월 범위(예: 작년 7월~올해 7월) 데이터 조회하기

YEAR(), MONTH(), CURDATE(), DATE_SUB()를 조합하면 상대적 월 범위 쿼리를 작성할 수 있습니다.

테이블 생성 및 데이터 삽입

mysql> CREATE TABLE DemoTable1795 (
    -> Name VARCHAR(20),
    -> DueDate DATE
    -> );
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO DemoTable1795 VALUES('John','2018-07-21');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1795 VALUES('Sam','2019-10-21');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1795 VALUES('Sam','2019-01-10');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1795 VALUES('Mike','2018-12-31');
Query OK, 1 row affected (0.00 sec)

데이터 조회

mysql> SELECT * FROM DemoTable1795;
+------+------------+
| Name | DueDate    |
+------+------------+
| John | 2018-07-21 |
| Sam  | 2019-10-21 |
| Sam  | 2019-01-10 |
| Mike | 2018-12-31 |
+------+------------+
4 rows in set (0.00 sec)

작년 7월 ~ 올해 7월 범위 조회 (현재 2019-11-29 기준)

mysql> SELECT * FROM DemoTable1795
    -> WHERE (YEAR(DueDate) = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 YEAR))
    ->        AND MONTH(DueDate) BETWEEN 7 AND 12)
    ->    OR (YEAR(DueDate) = YEAR(CURDATE())
    ->        AND MONTH(DueDate) BETWEEN 1 AND 7);
+------+------------+
| Name | DueDate    |
+------+------------+
| John | 2018-07-21 |
| Sam  | 2019-01-10 |
| Mike | 2018-12-31 |
+------+------------+
3 rows in set (0.00 sec)

간소화 팁: WHERE DueDate >= DATE_SUB(CURDATE(), INTERVAL 1 YEAR) AND DueDate <= CURDATE()처럼 날짜 직접 비교가 더 직관적이고 인덱스 활용에도 유리합니다. 함수 연산(YEAR(), MONTH())은 인덱스를 못 타게 할 수 있습니다.

  1. MySQL-এ নতুন যোগ করা রেকর্ডগুলো ফেচ করা

  2. MySQL কোয়েরি দিয়ে অ্যারে (কমা-বিচ্ছিন্ন মান) থেকে মিল খুঁজে নির্দিষ্ট রেকর্ড বের করা

  3. MySQL কুয়েরি: বর্তমান তারিখ থেকে ২ সপ্তাহ আগের রেকর্ড ফেচ করা

  4. MySQL-এ IN() অপারেটর দিয়ে একক কোয়েরিতে একাধিক রেকর্ড ডিলিট করা