🖥️ IT, 컴퓨터/🏁 SQL・빅쿼리

[SQL] DATE_TRUNC이란?

김 홍시 2024. 11. 24.
반응형

DATE_TRUNC란?

SQL에서 **DATE_TRUNC**는 날짜 또는 시간 데이터를 특정 시간 단위로 잘라내는(Truncate) 함수입니다. 주로 데이터의 날짜나 시간을 단순화하여 그룹화하거나, 특정 단위로 정렬 및 분석할 때 사용됩니다.


DATE_TRUNC의 기본 구조

DATE_TRUNC('단위', 날짜_컬럼)

주요 매개변수:

  1. 단위: 날짜 또는 시간을 자를 기준. 예를 들어, 연도, 월, 주, 일, 시간 등이 있음.
    • 예시: 'year', 'month', 'week', 'day', 'hour', 'minute', 'second' 등.
  2. 날짜_컬럼: 잘라낼 대상 날짜 또는 시간 값.

반환 값:

  • 입력된 날짜를 지정된 단위로 잘라낸 값.

지원되는 단위

(지원되는 단위는 데이터베이스 시스템에 따라 다를 수 있지만, 일반적으로 아래와 같은 단위가 자주 사용됨)

단위 설명 예시 (2024-11-24 15:45:30)

'year' 연 단위로 잘라냄 2024-01-01 00:00:00
'month' 월 단위로 잘라냄 2024-11-01 00:00:00
'week' 주 단위로 잘라냄 2024-11-18 00:00:00 (월요일 시작)
'day' 일 단위로 잘라냄 2024-11-24 00:00:00
'hour' 시간 단위로 잘라냄 2024-11-24 15:00:00
'minute' 분 단위로 잘라냄 2024-11-24 15:45:00
'second' 초 단위로 잘라냄 2024-11-24 15:45:30
'quarter' 분기 단위로 잘라냄 2024-10-01 00:00:00 (4분기 시작)

사용 예제

예제 테이블: 매출

판매ID 판매일시 매출액

1 2024-11-24 15:30:00 100
2 2024-11-24 18:45:00 200
3 2024-11-25 09:00:00 150
4 2024-12-01 10:15:00 300

1. 월 단위로 매출 집계

SELECT 
    DATE_TRUNC('month', 판매일시) AS 월별, 
    SUM(매출액) AS 총매출
FROM 매출
GROUP BY DATE_TRUNC('month', 판매일시)
ORDER BY 월별;

월별 총매출

2024-11-01 00:00:00 450
2024-12-01 00:00:00 300

2. 일 단위로 매출 집계

SELECT 
    DATE_TRUNC('day', 판매일시) AS 일별, 
    SUM(매출액) AS 총매출
FROM 매출
GROUP BY DATE_TRUNC('day', 판매일시)
ORDER BY 일별;

일별 총매출

2024-11-24 00:00:00 300
2024-11-25 00:00:00 150
2024-12-01 00:00:00 300

3. 시간 단위로 매출 집계

SELECT 
    DATE_TRUNC('hour', 판매일시) AS 시간별, 
    SUM(매출액) AS 총매출
FROM 매출
GROUP BY DATE_TRUNC('hour', 판매일시)
ORDER BY 시간별;

시간별 총매출

2024-11-24 15:00:00 100
2024-11-24 18:00:00 200
2024-11-25 09:00:00 150
2024-12-01 10:00:00 300

4. 주 단위로 매출 집계

SELECT 
    DATE_TRUNC('week', 판매일시) AS 주별, 
    SUM(매출액) AS 총매출
FROM 매출
GROUP BY DATE_TRUNC('week', 판매일시)
ORDER BY 주별;

주별 총매출

2024-11-18 00:00:00 450
2024-11-25 00:00:00 150
2024-12-02 00:00:00 300

DATE_TRUNC의 주요 활용 사례

  1. 시간 단위 그룹화
    • 시간별/일별/월별 데이터를 집계하거나 정렬할 때.
  2. 데이터 단순화
    • 분석 시 날짜나 시간을 단순화하여 트렌드를 파악.
  3. 비교 분석
    • 특정 기간(예: 월별, 분기별, 주별) 간의 변화량을 비교.
  4. 차트 생성
    • 데이터 시각화를 위해 날짜를 정규화.

DATE_TRUNC의 주의점

  1. 데이터베이스별 지원 여부:
    • PostgreSQL, Snowflake, Redshift 등에서 기본 지원.
    • MySQL에서는 DATE_FORMAT이나 다른 함수로 대체 가능.
  2. 정확도:
    • 시간 단위를 잘못 지정하면 예상치 못한 결과가 나올 수 있음.

요약

  • DATE_TRUNC는 날짜/시간 데이터를 특정 단위로 자르는 데 유용.
  • 복잡한 시간 데이터를 단순화하거나 분석하기 위한 필수 도구.
  • 다양한 시간 단위를 활용하여 데이터 집계, 정렬, 비교 작업을 간소화할 수 있음.

실제 사용 시 데이터베이스의 지원 여부를 확인하고, 비슷한 대체 함수와 함께 활용하세요! 🚀

반응형

'🖥️ IT, 컴퓨터 > 🏁 SQL・빅쿼리' 카테고리의 다른 글

[SQL] CURDATE() 함수란?  (0) 2024.11.24
[SQL] DATEDIFF란?  (0) 2024.11.24
[SQL] CTE(Common Table Expressions)란?  (0) 2024.11.24
[SQL] LEAD 함수란?  (0) 2024.11.24
[SQL] LAG란?  (0) 2024.11.24

댓글