🧚 들어보세요! Beekeeper Studio는 빠르고 모던한 오픈 소스 데이터베이스 GUI예요 다운로드
2024년 2월 19일 작성자: Matthew Rathbone

소개

PostgreSQL을 비롯한 SQL 데이터베이스를 다룰 때 날짜와 시간 데이터를 조작하고 쿼리하는 건 기본기예요. 애플리케이션에서는 주말을 제외하고 평일에만 초점을 맞춘 분석이나 리포트가 필요한 경우가 많아요. 이 튜토리얼에서는 PostgreSQL의 날짜 및 시간 함수를 활용해 평일 레코드만 조회하는 방법을 자세히 알아볼게요.

PostgreSQL의 날짜와 시간 이해하기

PostgreSQL은 날짜와 시간을 다루는 풍부한 함수와 연산자를 제공해서, 평일 기준으로 행을 조회하는 것 같은 복잡한 쿼리도 간단하게 작성할 수 있어요.

날짜/시간 데이터 타입

평일 쿼리를 살펴보기 전에 PostgreSQL의 주요 날짜/시간 데이터 타입을 알아두면 좋아요:

  • DATE: 날짜(연, 월, 일)용.
  • TIMESTAMP: 시간대 없는 날짜와 시간용.
  • TIMESTAMPTZ: 시간대가 있는 날짜와 시간용.
  • TIME: 시간대 없는 시간 전용.
  • TIMETZ: 시간대가 있는 시간 전용.

EXTRACT 함수

평일을 다룰 때 핵심이 되는 함수는 EXTRACT예요. 날짜/시간 값에서 요일 같은 특정 부분을 추출할 수 있어요.

평일만 쿼리하기

평일(월요일~금요일)에 해당하는 레코드를 조회하려면 EXTRACT 함수로 날짜에서 요일을 가져오면 돼요. 이때 일요일은 0, 토요일은 6이에요.

기본적인 평일 조회

평일만 포함하도록 행을 필터링하는 방법은 다음과 같아요:

-- Assuming a table 'events' with a 'date' column
SELECT *
FROM events
WHERE EXTRACT(DOW FROM date) BETWEEN 1 AND 5;

이 쿼리는 events 테이블에서 date 컬럼의 요일이 1(월요일)부터 5(금요일) 사이인 행을 조회해요.

출력:

id date event_name
1 2024-03-04 Project Launch
2 2024-03-05 Team Meeting

복잡한 시나리오: 테이블 조인과 평일 필터링

테이블을 조인하면서도 평일로 필터링해야 하는 좀 더 복잡한 예제를 살펴볼게요.

-- Assuming another table 'event_details' that references 'events'
SELECT e.*, ed.detail
FROM events e
JOIN event_details ed ON e.id = ed.event_id
WHERE EXTRACT(DOW FROM e.date) BETWEEN 1 AND 5;

이 쿼리는 이벤트를 평일로 필터링할 뿐 아니라 event_details 테이블과 조인해서 관련 데이터도 가져와요.

출력:

id date event_name detail
1 2024-03-04 Project Launch Kick-off meeting
2 2024-03-05 Team Meeting Monthly review

활용 사례

근무 시간 분석

근무 시간을 추적하는 기업이라면 주말을 제외해서 생산성과 인건비에 대한 인사이트를 얻을 수 있어요.

-- Assuming a table 'work_hours' with 'employee_id', 'date', and 'hours_worked'
SELECT employee_id, SUM(hours_worked) AS total_hours
FROM work_hours
WHERE EXTRACT(DOW FROM date) BETWEEN 1 AND 5
GROUP BY employee_id;

이 쿼리는 직원별로 평일 동안 일한 총 시간을 계산해요.

출력:

employee_id total_hours
101 40
102 38

이벤트 기획

이벤트 기획자라면 평일에 초점을 맞춰 이벤트를 더 효율적으로 구성하고 일정을 잡을 수 있어요.

-- Finding available event dates during weekdays
SELECT date
FROM events
WHERE EXTRACT(DOW FROM date) BETWEEN 1 AND 5
AND date > CURRENT_DATE
ORDER BY date;

이렇게 하면 향후 이벤트 기획을 위해 다가오는 평일 날짜를 파악할 수 있어요.

출력:

date
2024-03-06
2024-03-07

결론

PostgreSQL에서 평일 기준으로 레코드를 조회하는 건 데이터 분석과 애플리케이션 로직에 유용한 기법이에요. PostgreSQL의 날짜 및 시간 함수, 특히 EXTRACT를 활용하면 필요에 맞게 데이터를 쉽게 필터링할 수 있어요. 비즈니스 운영을 분석하든, 이벤트를 기획하든, 단순히 일정을 관리하든, 평일을 쿼리하는 방법을 알아두면 데이터베이스 실력이 한층 높아질 거예요.

이 예제들로 연습해 보고, PostgreSQL 문서에서 더 많은 날짜/시간 함수를 살펴보면서 데이터에서 더 많은 인사이트를 얻어 보세요.

즐거운 쿼리 작성 되세요!

Beekeeper Studio는 무료 오픈 소스 데이터베이스 GUI예요

지금까지 써 본 SQL 쿼리 & 에디터 도구 중 최고예요. 데이터베이스 관리에 필요한 모든 게 다 있어요. - ⭐⭐⭐⭐⭐ Mit

Beekeeper Studio는 빠르고 직관적이며 사용하기 쉬워요. 다양한 데이터베이스를 지원하고 Windows, Mac, Linux에서 모두 잘 작동해요.

Beekeeper의 Linux 버전은 100% 모든 기능을 갖추고 있어요. 대충 만든 부분도, 빠진 기능도 없어요.

Beekeeper Studio 사용자 후기

★★★★★
"Beekeeper Studio가 예전 SQL 워크플로를 완전히 대체했어요. 빠르고 직관적이라 데이터베이스 작업이 다시 즐거워졌어요."
— Alex K., 데이터베이스 개발자
★★★★★
"여러 데이터베이스 GUI를 써봤지만, Beekeeper는 기능과 단순함 사이의 균형이 완벽해요. 그냥 잘 작동해요."
— Sarah M., 풀스택 엔지니어

SQL 워크플로를 개선할 준비가 되셨나요?

download 무료 다운로드