Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 날짜 및 시간을 내림차순으로 정렬하는 방법

MySQL에서 날짜(date)와 시간(time) 데이터를 내림차순으로 정렬하는 방법을 예제를 통해 알아보겠습니다. 먼저 실습에 사용할 테이블을 생성하는 쿼리부터 살펴봅니다.

1. 테이블 생성

사용자 ID, 이름, 발행 날짜, 발행 시간을 저장하는 테이블을 아래 쿼리로 생성합니다.

mysql> create table SortByDateAndTime
-> (
-> UserId int,
-> UserName varchar(100),
-> IssueDate date,
-> IssueTime time
-> );
Query OK, 0 rows affected (0.60 sec)

2. 데이터 삽입

INSERT 문을 사용해 테이블에 레코드를 추가합니다. 네 명의 사용자가 같은 날짜(2018-12-16)에 서로 다른 시간대로 데이터를 등록한 상황입니다.

mysql> insert into SortByDateAndTime values(1,'John','2018-12-16','10:30');
Query OK, 1 row affected (0.14 sec)

mysql> insert into SortByDateAndTime values(2,'Bob','2018-12-16','10:10');
Query OK, 1 row affected (0.14 sec)

mysql> insert into SortByDateAndTime values(3,'Carol','2018-12-16','10:20');
Query OK, 1 row affected (0.10 sec)

mysql> insert into SortByDateAndTime values(4,'Sam','2018-12-16','10:00');
Query OK, 1 row affected (0.15 sec)

3. 전체 데이터 조회

SELECT 문으로 테이블의 모든 레코드를 확인해 보겠습니다.

mysql> select * from SortByDateAndTime;

출력 결과

+--------+----------+------------+-----------+
| UserId | UserName | IssueDate | IssueTime |
+--------+----------+------------+-----------+
| 1 | John | 2018-12-16 | 10:30:00 |
| 2 | Bob | 2018-12-16 | 10:10:00 |
| 3 | Carol | 2018-12-16 | 10:20:00 |
| 4 | Sam | 2018-12-16 | 10:00:00 |
+--------+----------+------------+-----------+
4 rows in set (0.00 sec)

4. 날짜·시간 기준 내림차순 정렬

날짜와 시간을 모두 내림차순(DESC)으로 정렬하려면 ORDER BY 절에 두 컬럼을 지정하고 각각 DESC 키워드를 붙이면 됩니다. 이 경우 가장 최근 날짜에 가장 늦은 시간 순서대로 데이터가 조회됩니다.

mysql> select UserId,UserName,date(IssueDate) as date1,IssueTime from
SortByDateAndTime
-> order by date(IssueDate) desc,IssueTime desc;

출력 결과

+--------+----------+------------+-----------+
| UserId | UserName | date1 | IssueTime |
+--------+----------+------------+-----------+
| 1 | John | 2018-12-16 | 10:30:00 |
| 3 | Carol | 2018-12-16 | 10:20:00 |
| 2 | Bob | 2018-12-16 | 10:10:00 |
| 4 | Sam | 2018-12-16 | 10:00:00 |
+--------+----------+------------+-----------+
4 rows in set (0.00 sec)

결과를 보면 시간이 10:30 → 10:20 → 10:10 → 10:00 순으로, 즉 내림차순으로 정렬된 것을 확인할 수 있습니다.

5. 응용: 날짜는 내림차순, 시간은 오름차순 정렬

상황에 따라 날짜는 내림차순으로, 시간은 오름차순(ASC)으로 정렬해야 할 수도 있습니다. 이때는 두 번째 정렬 조건에 ASC를 지정하면 됩니다.

mysql> select UserId,UserName,date(IssueDate) as date1,IssueTime from
SortByDateAndTime
-> order by date(IssueDate) desc,IssueTime asc;

출력 결과

+--------+----------+------------+-----------+
| UserId | UserName | date1 | IssueTime |
+--------+----------+------------+-----------+
| 4 | Sam | 2018-12-16 | 10:00:00 |
| 2 | Bob | 2018-12-16 | 10:10:00 |
| 3 | Carol | 2018-12-16 | 10:20:00 |
| 1 | John | 2018-12-16 | 10:30:00 |
+--------+----------+------------+-----------+
4 rows in set (0.00 sec)

정리

MySQL에서 날짜와 시간을 함께 정렬할 때는 ORDER BY 절에 여러 컬럼을 나열하고 각각 DESC(내림차순) 또는 ASC(오름차순)를 지정하면 됩니다. 정렬 우선순위는 앞에 작성된 컬럼이 먼저 적용되며, 첫 번째 조건의 값이 같을 때 두 번째 조건이 적용됩니다. 게시글 목록처럼 최신 데이터를 먼저 보여줘야 하는 경우 날짜와 시간을 모두 DESC로 정렬하는 방식을 활용하면 유용합니다.