OkBublewrap

Postgres 날짜 함수 정리 본문

개발/SQL

Postgres 날짜 함수 정리

옥뽁뽁 2025. 3. 10. 09:20

📌 요약: 자주 쓰는 함수들

CURRENT_DATE 현재 날짜 2025-03-10
NOW() 현재 날짜 및 시간 2025-03-10 14:30:00
TO_DATE('YYYY-MM-DD') 문자열 → 날짜 변환 '2022-07-10'
TO_TIMESTAMP('YYYY-MM-DD HH24:MI:SS') 문자열 → 타임스탬프 변환 '2022-07-10 14:30:00'
EXTRACT(YEAR FROM date) 특정 날짜에서 연도 추출 2025
DATE_TRUNC('month', date) 월 단위로 날짜 그룹화 '2025-03-01 00:00:00'
TO_CHAR(date, 'YYYY-MM-DD') 날짜를 문자열로 변환 '2025-03-10'

 

 

📌 TO_DATE 사용법

문자열을 DATE 타입으로 변환할 때 사용됩니다.

SELECT TO_DATE('2022-07-10', 'YYYY-MM-DD');

🖨️ 출력: 2022-07-10

이때, 입력값이 문자열(TEXT) 타입이어야 합니다.
만약 TIMESTAMP 또는 DATE 타입 값을 변환하려면 다른 방법을 사용해야 합니다.

 

 

📌 DATE_TRUNC 활용 (날짜만 추출)

TIMESTAMP 컬럼에서 날짜만 추출할 때는 DATE_TRUNC 또는 CAST를 사용합니다.

SELECT DATE_TRUNC('day', NOW());

🖨️ 출력: 2025-03-10 00:00:00

 

 

📌 CAST 또는 ::DATE 활용

SELECT NOW()::DATE;

🖨️ 출력: 2025-03-10

이처럼 TO_DATE는 문자열 → 날짜 변환용이고,
날짜를 다룰 때는 DATE_TRUNC 또는 ::DATE를 사용하는 것이 더 적절합니다. 😊

 

 

 

📌 PostgreSQL 날짜 및 시간 함수 정리

1️⃣ 날짜/시간 변환 함수

🔹 TO_DATE - 문자열을 DATE 타입으로 변환

SELECT TO_DATE('2022-07-10', 'YYYY-MM-DD');

🖨️ 출력: 2022-07-10

⚠️ 주의: TO_DATE는 TEXT → DATE 변환용이며, TIMESTAMP 데이터에는 사용하지 않음.

 

 

🔹 TO_TIMESTAMP - 문자열을 TIMESTAMP로 변환

SELECT TO_TIMESTAMP('2022-07-10 14:30:00', 'YYYY-MM-DD HH24:MI:SS');

🖨️ 출력: 2022-07-10 14:30:00+00

 

 

🔹 CAST 또는 ::DATE - 날짜만 추출

SELECT '2025-03-10 14:30:00'::DATE; SELECT CAST('2025-03-10 14:30:00' AS DATE);

🖨️ 출력: 2025-03-10

 

 

2️⃣ 현재 날짜 및 시간 관련 함수

🔹 CURRENT_DATE - 현재 날짜 가져오기

SELECT CURRENT_DATE;

🖨️ 출력: 2025-03-10

 

🔹 NOW() - 현재 날짜 및 시간 가져오기

SELECT NOW();

🖨️ 출력: 2025-03-10 14:30:00.123456+09

 

🔹 CURRENT_TIMESTAMP - NOW()와 동일 (정확한 TIMESTAMP 값)

SELECT CURRENT_TIMESTAMP;

 

 

3️⃣ 날짜 연산 함수

🔹 날짜 + n일 (INTERVAL)

SELECT CURRENT_DATE + INTERVAL '5 days';

🖨️ 출력: 2025-03-15

 

🔹 날짜 - n일

SELECT CURRENT_DATE - INTERVAL '5 days';

🖨️ 출력: 2025-03-05

 

🔹 두 날짜 간 차이 (일 단위)

SELECT CURRENT_DATE - '2025-03-01'::DATE;

🖨️ 출력: 9 (9일 차이)

 

 

4️⃣ 날짜 포맷 변환

🔹 TO_CHAR - 날짜를 문자열로 변환 (포맷 변경)

SELECT TO_CHAR(NOW(), 'YYYY-MM-DD HH24:MI:SS');

🖨️ 출력: '2025-03-10 14:30:00'

 

🔹 날짜에서 연, 월, 일 추출

-- 연도 추출 
SELECT EXTRACT(YEAR FROM NOW()); 
-- 월 추출 
SELECT EXTRACT(MONTH FROM NOW()); 
-- 일 추출
SELECT EXTRACT(DAY FROM NOW());

 

 

5️⃣ 날짜 그룹핑 및 정렬

🔹 DATE_TRUNC - 날짜 단위로 그룹화

SELECT DATE_TRUNC('month', NOW()); -- 현재 월의 첫날로 변환

🖨️ 출력: 2025-03-01 00:00:00

 

 

 

 

'개발 > SQL' 카테고리의 다른 글

Active User Retention  (0) 2025.03.10
Y-on-Y Growth Rate  (0) 2025.03.10
Odd and Even Measurements  (0) 2025.03.10
Well Paid Employees  (0) 2025.03.10
Average Review Ratings  (0) 2025.03.10