EXTRACT, DATE_TRUNC, AGE
EXTRACT로 날짜의 일부를 추출하고, DATE_TRUNC로 타임스탬프를 경계 시점에 맞추며, AGE로 사람이 읽기 쉬운 차이를 계산합니다.
EXTRACT, DATE_TRUNC, AGE은(는) CoddyKit의 무료 SQL Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 SQL Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
EXTRACT: 날짜 구성 요소 추출
EXTRACT(part FROM ts)는 하나의 숫자 구성 요소를 반환합니다.
SELECT EXTRACT(YEAR FROM created_at) AS yr,
EXTRACT(MONTH FROM created_at) AS mo,
EXTRACT(DAY FROM created_at) AS d,
EXTRACT(DOW FROM created_at) AS day_of_week
FROM orders;일반적인 EXTRACT 구성 요소
유용한 구성 요소는 다음과 같습니다: YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, DOW (0=Sun), DOY (1–366), WEEK, QUARTER, EPOCH.
SELECT EXTRACT(EPOCH FROM (NOW() - created_at)) AS seconds_ago
FROM events;DATE_TRUNC: 경계에 맞추기
DATE_TRUNC(unit, ts)는 지정한 단위보다 작은 모든 값을 0으로 설정합니다. 구간별 보고서에 가장 유용한 함수입니다.
SELECT date_trunc('day', NOW()); -- 2024-03-15 00:00:00
SELECT date_trunc('week', NOW());
SELECT date_trunc('month', NOW());
SELECT date_trunc('hour', NOW());구간별 보고서
date_trunc를 사용한 월별 매출입니다.
SELECT date_trunc('month', created_at) AS month,
SUM(total) AS revenue
FROM orders
GROUP BY 1
ORDER BY 1;연간 누계 / 월간 누계
현재 기간과 작년의 같은 시점를 비교합니다.
-- This month so far
SELECT SUM(total) FROM orders
WHERE created_at >= date_trunc('month', NOW())
AND created_at < date_trunc('month', NOW()) + INTERVAL '1 month';AGE: 달력을 고려한 차이
AGE는 단순히 일수만 반환하지 않고 년 + 월 + 일을 반환합니다.
SELECT AGE('2024-03-15', '2020-12-01');
-- → '3 years 3 months 14 days'
SELECT EXTRACT(YEAR FROM AGE('2024-03-15', '2020-12-01')); -- 3두 인수를 사용하는 AGE 동작
인수를 하나만 지정한 AGE는 current_date와 비교합니다.
SELECT AGE(birth_date) FROM users LIMIT 5;요일 기준 논리
EXTRACT(DOW): 0=일요일 … 6=토요일입니다. ISO_DOW: 1=월요일 … 7=일요일입니다.
SELECT * FROM orders
WHERE EXTRACT(ISODOW FROM created_at) IN (6, 7); -- weekend ordersEXTRACT의 시간대
TIMESTAMPTZ에서 EXTRACT를 사용하면 SESSION의 시간대를 사용합니다. 시간대를 제어하려면 AT TIME ZONE을 사용하십시오.
SELECT EXTRACT(HOUR FROM created_at AT TIME ZONE 'UTC') FROM events;
SELECT EXTRACT(HOUR FROM created_at AT TIME ZONE 'Europe/Berlin') FROM events;사용자 지정 구간으로 절삭
달력 기준이 아닌 구간(예: 5분마다)을 사용하려면 산술을 사용하십시오.
SELECT to_timestamp(
floor(EXTRACT(EPOCH FROM created_at) / 300) * 300
) AS bucket_5min,
COUNT(*)
FROM events
GROUP BY 1
ORDER BY 1;절삭을 위한 함수 인덱스
date_trunc('day', created_at)으로 GROUP BY를 자주 수행한다면 함수 인덱스가 도움이 됩니다.
CREATE INDEX events_day_idx ON events ((date_trunc('day', created_at)));복습
EXTRACT + DATE_TRUNC + AGE는 대부분의 보고서 요구 사항을 충족합니다.
- 개별 구성 요소에는 EXTRACT
- 경계에 맞추려면 DATE_TRUNC
- 달력을 고려한 기간에는 AGE
빠른 확인
날짜를 월별로 묶는 함수는 무엇입니까?
자주 묻는 질문
“EXTRACT, DATE_TRUNC, AGE” 강의는 무료인가요?
네 — “EXTRACT, DATE_TRUNC, AGE” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 SQL Academy 강의 전체를 잠금 해제할 수 있습니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“EXTRACT, DATE_TRUNC, AGE”에서 뭘 배우나요?
EXTRACT로 날짜의 일부를 추출하고, DATE_TRUNC로 타임스탬프를 경계 시점에 맞추며, AGE로 사람이 읽기 쉬운 차이를 계산합니다. 브라우저에서 직접 실행하는 실습 코드로 SQL Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
SQL Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 SQL Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“EXTRACT, DATE_TRUNC, AGE” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 SQL Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 SQL Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 날짜 연산과 INTERVAL
- EXTRACT, DATE_TRUNC, AGE
- 시간대: TIMESTAMP와 TIMESTAMPTZ
- 일반적인 날짜 보고서(MTD, WoW, YoY)