logo

날짜별 SQL 주문

  • ORDER BY는 테이블에서 오름차순 또는 내림차순으로 레코드를 가져오기 위해 SELECT 쿼리와 함께 사용되는 SQL 절입니다.
  • 테이블의 열에 저장된 정수와 문자열 값을 정렬하는 것처럼 SQL 테이블의 열에 저장된 날짜도 정렬할 수 있습니다.
  • 모든 레코드는 기본적으로 오름차순으로 정렬됩니다. 레코드를 내림차순으로 정렬하려면 DESC 키워드를 사용합니다.

이 개념을 더 명확하게 이해하기 위해 몇 가지 실제 사례를 살펴보겠습니다. 우리는 모든 쿼리를 작성하기 위해 MySQL 데이터베이스를 사용할 것입니다.

다음 데이터를 사용하여 MySQL 데이터베이스에 직원이라는 테이블을 생성했다고 가정해 보겠습니다.

ID 이름 샐러리 가입_날짜 생년월일
1 로힛 더보기 50000 2020-02-08 1991-01-28 18:06:08
2 쿠날 모히트 34000 2021-01-01 1990-05-15 19:10:00
사우라브 자 61000 2015-05-01 1983-02-20 12:18:45
4 아난트 데사이 59000 2018-08-27 1978-06-29 15:45:13
5 크리슈나 샤르마 48000 2010-10-23 1999-03-21 02:14:56
6 바베시 자이나교 37000 2021-07-03 1998-08-02 13:00:01

예시 1:

생년월일 오름차순으로 정렬된 직원의 모든 세부 정보를 표시하는 쿼리를 작성하세요.

질문:

 mysql> SELECT *FROM employees ORDER BY DOB; 

직원의 생년월일 오름차순으로 레코드를 정렬하고 싶기 때문에 'DOB' 컬럼에 ORDER BY 절을 적용했습니다.

다음과 같은 결과가 출력됩니다.

ID 이름 샐러리 가입_날짜 생년월일
4 아난트 데사이 59000 2018-08-27 1978-06-29 15:45:13
사우라브 자 61000 2015-05-01 1983-02-20 12:18:45
2 쿠날 모히트 34000 2021-01-01 1990-05-15 19:10:00
1 로힛 더보기 50000 2020-02-08 1991-01-28 18:06:08
6 바베시 자이나교 37000 2021-07-03 1998-08-02 13:00:01
5 크리슈나 샤르마 48000 2010-10-23 1999-03-21 02:14:56

위 쿼리의 결과를 보면 DOB의 오름차순으로 레코드가 표시되는 것을 알 수 있습니다.

예 2:

입사일자 내림차순으로 정렬된 사원의 모든 세부정보를 출력하는 쿼리를 작성하세요.

질문:

 mysql> SELECT *FROM employees ORDER BY Joining_Date DESC; 

직원들의 입사일을 기준으로 내림차순으로 레코드를 정렬하고 싶어서 'Joining_Date' 컬럼에 DESC 키워드와 함께 ORDER BY 절을 적용했습니다.

다음과 같은 결과가 출력됩니다.

ID 이름 샐러리 가입_날짜 생년월일
6 바베시 자이나교 37000 2021-07-03 1998-08-02 13:00:01
2 쿠날 모히트 34000 2021-01-01 1990-05-15 19:10:00
1 로힛 더보기 50000 2020-02-08 1991-01-28 18:06:08
4 아난트 데사이 59000 2018-08-27 1978-06-29 15:45:13
사우라브 자 61000 2015-05-01 1983-02-20 12:18:45
5 크리슈나 샤르마 48000 2010-10-23 1999-03-21 02:14:56

위 질의 결과를 보면, 가입 날짜의 내림차순으로 기록이 표시되는 것을 알 수 있습니다.

예시 3:

사원의 모든 세부사항을 출생연도 오름차순으로 정렬하여 출력하는 쿼리를 작성하세요.

질문:

 mysql> SELECT ID, Name, Salary, Joining_Date, DATE_FORMAT (DOB, '%Y') AS Year_of_Birth FROM employees ORDER BY DATE_FORMAT (DOB, '%Y'); 

직원의 출생연도 오름차순으로 레코드를 정렬하고 싶기 때문에 ORDER BY 절을 적용했습니다. DATE_FORMAT() 함수를 DOB 컬럼에 '%Y' 매개변수를 적용하여 'DOB'에서 연도만 추출한다.

자바 수학 펑

다음과 같은 결과가 출력됩니다.

ID 이름 샐러리 가입_날짜 연도_생년월일
4 아난트 데사이 59000 2018-08-27 1978년
사우라브 자 61000 2015-05-01 1983년
2 쿠날 모히트 34000 2021-01-01 1990년
1 로힛 더보기 50000 2020-02-08 1991년
6 바베시 자이나교 37000 2021-07-03 1998년
5 크리슈나 샤르마 48000 2010-10-23 1999년

위 질의 결과를 보면, 해당 직원의 출생연도 오름차순으로 기록이 출력되는 것을 알 수 있다.

예시 4:

출생시간의 내림차순으로 정렬된 직원의 모든 세부정보를 표시하는 쿼리를 작성하세요.

질문:

 mysql> SELECT ID, Name, Salary, Joining_Date, DATE_FORMAT (DOB, '%H') AS Hour_Of_Birth FROM employees ORDER BY DATE_FORMAT (DOB, '%H') DESC; 

직원의 출생 시간을 기준으로 내림차순으로 레코드를 정렬하고 싶었기 때문에 DESC 키워드와 함께 ORDER BY 절을 적용했습니다. DATE_FORMAT() 함수를 DOB 컬럼에 '%H' 파라미터를 적용하여 'DOB' 컬럼에서 생년월일만 추출한다.

다음과 같은 결과가 출력됩니다.

ID 이름 샐러리 가입_날짜 Hour_Of_Birth
2 쿠날 모히트 34000 2021-01-01 19
1 로힛 더보기 50000 2020-02-08 18
4 아난트 데사이 59000 2018-08-27 열 다섯
6 바베시 자이나교 37000 2021-07-03 13
사우라브 자 61000 2015-05-01 12
5 크리슈나 샤르마 48000 2010-10-23 02

위 질의 결과를 보면, 해당 직원의 출생시간이 큰 순서대로 기록이 출력되는 것을 알 수 있다.

예시 5:

입사년도 오름차순으로 정렬된 사원의 모든 세부정보를 출력하는 쿼리를 작성해보세요.

질문:

현재까지의 변환기 문자열
 mysql> SELECT ID, Name, Salary, DOB, DATE_FORMAT (Joining_Date, '%Y') AS Year_Of_Joining FROM employees ORDER BY DATE_FORMAT (Joining_Date, '%Y'); 

입사년도를 오름차순으로 정렬하고 싶어서 ORDER BY 절을 적용했습니다. Joining_Date 컬럼에 '%Y' 매개변수를 지정하여 DATE_FORMAT() 함수를 적용하면 'Joining_Date'에서 연도만 추출됩니다.

다음과 같은 결과가 출력됩니다.

ID 이름 샐러리 연도_가입_ 생년월일
5 크리슈나 샤르마 48000 2010 1999-03-21 02:14:56
사우라브 자 61000 2015년 1983-02-20 12:18:45
4 아난트 데사이 59000 2018 1978-06-29 15:45:13
1 로힛 더보기 50000 2020 1991-01-28 18:06:08
2 쿠날 모히트 34000 2021 1990-05-15 19:10:00
6 바베시 자이나교 37000 2021 1998-08-02 13:00:01

위 질의 결과를 보면, 입사년도의 오름차순으로 기록이 조회되는 것을 알 수 있다.

예시 6:

사원의 모든 내역을 입사일 기준으로 내림차순으로 정렬하여 출력하는 쿼리를 작성해보세요.

질문:

 mysql> SELECT ID, Name, Salary, DAY (Joining_Date) AS Day_Of_Joining, DOB FROM employees ORDER BY DAY (Joining_Date) DESC; 

입사일 기준으로 내림차순으로 기록을 정렬하고 싶어서 DESC 키워드와 함께 ORDER BY 절을 적용했습니다. 'Joining_Date' 컬럼에 DAY() 함수를 적용하여 Joining_Date에서 가입한 날짜만 추출합니다.

다음과 같은 결과가 출력됩니다.

ID 이름 샐러리 Day_Of_참여 생년월일
4 아난트 데사이 59000 27 1978-06-29 15:45:13
5 크리슈나 샤르마 48000 23 1999-03-21 02:14:56
1 로힛 더보기 50000 8 1991-01-28 18:06:08
6 바베시 자이나교 37000 1998-08-02 13:00:01
2 쿠날 모히트 34000 1 1990-05-15 19:10:00
사우라브 자 61000 1 1983-02-20 12:18:45

위 질의 결과를 보면, 입사일 기준으로 내림차순으로 기록이 출력되는 것을 알 수 있다.

예시 7:

사원의 생일을 오름차순으로 정렬하여 사원의 모든 정보를 출력하는 쿼리를 작성하세요.

질문:

 mysql> SELECT ID, Name, Salary, Joining_Date, DAY (DOB) AS Day_Of_Birth FROM employees ORDER BY DAY (DOB); 

직원의 생일을 기준으로 오름차순으로 정렬하고 싶기 때문에 ORDER BY 절을 적용했습니다. 'DOB' 컬럼에 DAY() 함수를 적용하여 DOB에서 생년월일만 추출한다.

다음과 같은 결과가 출력됩니다.

ID 이름 샐러리 연도_가입_ 출생의 날
6 바베시 자이나교 37000 2021-07-03 2
2 쿠날 모히트 34000 2021-01-01 열 다섯
사우라브 자 61000 2015-05-01 이십
5 크리슈나 샤르마 48000 2010-10-23 이십 일
1 로힛 더보기 50000 2020-02-08 28
4 아난트 데사이 59000 2018-08-27 29

위 질의 결과를 보면, 해당 직원의 생일을 기준으로 오름차순으로 기록이 출력되는 것을 알 수 있다.

예시 8:

사원의 생일을 기준으로 오름차순으로 정렬하여 사원의 모든 정보를 출력하는 쿼리를 작성하세요.

질문:

 mysql> SELECT ID, Name, Salary, Joining_Date, DOB FROM employees ORDER BY MONTH (DOB); 

ID 이름 샐러리 가입_날짜 생년월일
1 로힛 더보기 50000 2020-02-08 1991-01-28 18:06:08
사우라브 자 61000 2015-05-01 1983-02-20 12:18:45
5 크리슈나 샤르마 48000 2010-10-23 1999-03-21 02:14:56
2 쿠날 모히트 34000 2021-01-01 1990-05-15 19:10:00
4 아난트 데사이 59000 2018-08-27 1978-06-29 15:45:13
6 바베시 자이나교 37000 2021-07-03 1998-08-02 13:00:01

위 질의 결과를 보면, 해당 사원의 출생월을 기준으로 오름차순으로 기록이 출력되는 것을 알 수 있다.

예시 9:

사원의 입사월을 기준으로 오름차순으로 정렬하여 사원의 모든 내역을 출력하는 쿼리를 작성해보세요.

질문:

 mysql> SELECT ID, Name, Salary, Joining_Date, DOB FROM employees ORDER BY MONTH (Joining_Date); 

입사월을 기준으로 오름차순으로 정렬하고 싶기 때문에 ORDER BY 절을 적용했습니다. Joining_Date 컬럼에 MONTH() 함수를 적용하여 Joining_Date에서 가입월만 추출합니다.

다음과 같은 결과가 출력됩니다.

ID 이름 샐러리 가입_날짜 생년월일
2 쿠날 모히트 34000 2021-01-01 1990-05-15 19:10:00
1 로힛 더보기 50000 2020-02-08 1991-01-28 18:06:08
사우라브 자 61000 2015-05-01 1983-02-20 12:18:45
6 바베시 자이나교 37000 2021-07-03 1998-08-02 13:00:01
4 아난트 데사이 59000 2018-08-27 1978-06-29 15:45:13
5 크리슈나 샤르마 48000 2010-10-23 1999-03-21 02:14:56

위 질의 결과를 보면, 입사월을 기준으로 오름차순으로 기록이 출력되는 것을 알 수 있다.