Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL을 사용하여 뉴스 테이블에서 지난 6개월 동안의 레코드를 선택하는 방법은 무엇입니까?

<시간/>

뉴스 테이블에서 최근 6개월 레코드를 선택하려면 뉴스 레코드가 날짜별로 정렬되므로 MySQL의 date_sub() 함수를 사용하십시오.

구문은 다음과 같습니다 -

select *from yourTableName where yourDateTimeColumnName >= date_sub(now(),interval 6 month);

위의 개념을 이해하기 위해 먼저 NEWS ID와 게시 날짜만 포함하는 NEWS 테이블을 생성해 보겠습니다. −

mysql> create table Newstable
   -> (
   -> NewsId int,
   -> NewsDatetime datetime
   -> );
Query OK, 0 rows affected (0.66 sec)

insert 명령을 사용하여 테이블에 레코드를 삽입합니다. 쿼리는 다음과 같습니다 -

mysql> insert into Newstable values(101,'2018-2-10');
Query OK, 1 row affected (0.18 sec)

mysql> insert into Newstable values(102,'2018-12-10');
Query OK, 1 row affected (0.19 sec)

mysql> insert into Newstable values(103,'2018-3-14');
Query OK, 1 row affected (0.14 sec)

mysql> insert into Newstable values(104,'2018-12-12');
Query OK, 1 row affected (0.29 sec)

mysql> insert into Newstable values(105,'2018-4-21');
Query OK, 1 row affected (0.09 sec)

mysql> insert into Newstable values(106,'2018-6-30');
Query OK, 1 row affected (0.22 sec)

select 문을 사용하여 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다 -

mysql> select *from Newstable;

출력

+--------+---------------------+
| NewsId | NewsDatetime        |
+--------+---------------------+
|    101 | 2018-02-10 00:00:00 |
|    102 | 2018-12-10 00:00:00 |
|    103 | 2018-03-14 00:00:00 |
|    104 | 2018-12-12 00:00:00 |
|    105 | 2018-04-21 00:00:00 |
|    106 | 2018-06-30 00:00:00 |
+--------+---------------------+
6 rows in set (0.00 sec)

다음은 새 테이블에서 지난 6개월을 선택하는 쿼리입니다. 쿼리는 다음과 같습니다 -

mysql> select *from Newstable where NewsDatetime > date_sub(now(),Interval 6 month);

출력

+--------+---------------------+
| NewsId | NewsDatetime        |
+--------+---------------------+
|    102 | 2018-12-10 00:00:00 |
|    104 | 2018-12-12 00:00:00 |
|    106 | 2018-06-30 00:00:00 |
+--------+---------------------+
3 rows in set (0.00 sec)