[SQL 쿡북/09장] 11절. 특정 시간 단위 검색하기

정은아·2025년 5월 23일

[도서] SQL 쿡북

목록 보기
10/13
post-thumbnail

09장. 날짜 조작 기법


  • RDBMS에서 제공하는 함수를 사용하여 날짜의 월 및 요일명을 찾습니다.
  • 이 해법은 다양한 상황에서 유용할 수 있습니다.
  • HIREDATE 검색하고 싶지만 월(또는 관심이 있는 HIREDATE의 다른 부분)을 추출하고 연도는 무시하려면 그렇게 할 수 있습니다.
  • RDBMS에서 제공하는 날짜 형식 지정 함수를 알아두면 이를 응용하여 연도, 분기, 연도 및 분기 조합, 월 및 연도 조합 등으로 쉽게 검색할 수 있습니다.

🎨 DB2와 MySQL

  • MONTHNAME 및 DAYNAME 함수를 사용하여 사원이 고용된 월 및 요일의 이름을 각각 찾습니다.
SELECT ename
FROM emp
WHERE MONTHNAME(hiredate) IN ('February', 'December')
   OR DAYNAME(hiredate) = 'Tuesday';

✅ 해석

  • MONTHNAME(hiredate)
    → 입사일의 월 이름을 반환
    예: 'January', 'February', 'December'

  • DAYNAME(hiredate)
    → 입사일의 요일 이름을 반환
    예: 'Monday', 'Tuesday', 'Friday'


🎨 Oracle과 PostgreSQL

  • TO_CHAR 함수를 사용하여 사원이 고용된 월과 요일의 이름을 찾습니다.
  • RTRIM 함수를 사용하여 후행 공백을 제거합니다.
SELECT ename
FROM emp 
WHERE RTRIM(TO_CHAR(hiredate, 'month')) IN ('february', 'december')
   OR RTRIM(TO_CHAR(hiredate, 'day')) = 'tuesday';

🎨 SQL Server

  • DATENAME 함수를 사용하여 사원이 고용된 월과 요일의 이름을 찾습니다.
SELECT ename
FROM emp
WHERE RTRIM(FORMAT(hiredate, 'MMMM')) IN ('February', 'December')
   OR RTRIM(FORMAT(hiredate, 'dddd')) = 'Tuesday';

✅ 해석

  1. FROM emp

    • emp 테이블에서 전체 사원 데이터를 조회
  2. WHERE 절 조건

    • 첫 번째 조건:

      RTRIM(FORMAT(hiredate, 'MMMM')) IN ('February', 'December')
      • FORMAT(hiredate, 'MMMM'): hiredate에서 월 이름을 출력 (예: 'February', 'December')
      • RTRIM(...): 오른쪽 공백 제거 (일부 시스템 호환을 위한 보완)
      • 결과적으로 2월 또는 12월에 입사한 사원을 선택
    • 두 번째 조건:

      RTRIM(FORMAT(hiredate, 'dddd')) = 'Tuesday'
      • FORMAT(hiredate, 'dddd'): hiredate에서 요일 이름을 출력 (예: 'Tuesday')
      • RTRIM(...): 오른쪽 공백 제거
      • 결과적으로 화요일에 입사한 사원을 선택
  3. SELECT ename

    • 위 조건을 만족하는 사원의 이름(ename)을 조회
profile
꾸준함의 가치를 믿는 개발자

0개의 댓글