상세 컨텐츠

본문 제목

[MySQL] 날짜 및 시간 관련 함수

SQL

by Corn/sec 2025. 3. 4. 23:00

본문

작성: Corn/sec, ChatGPT, 편집: Corn/sec

📌 날짜 및 시간 관련 함수

SQL에서는 날짜/시간 데이터를 처리할 때 다양한 함수를 제공하며, 대표적인 함수들은 다음과 같습니다.

 

1️⃣ 연도 및 분기, 월 관련

함수 설명 예제
YEAR(date) 연도 추출 SELECT YEAR('2024-03-04'); -- 결과: 2024
QUARTER(date) 분기(1~4) 추출 SELECT QUARTER('2024-03-04'); -- 결과: 1
MONTH(date) 월(1~12) 추출 SELECT MONTH('2024-03-04'); -- 결과: 3
WEEK(date) 연 기준 주차(1~53) SELECT WEEK('2024-03-04'); -- 결과: 9
DAY(date) 일(1~31) 추출 SELECT DAY('2024-03-04'); -- 결과: 4
DAYOFWEEK(date) 요일(1=일요일, 7=토요일) SELECT DAYOFWEEK('2024-03-04'); -- 결과: 2 (월요일)
DAYOFYEAR(date) 연도 기준 일(1~365) SELECT DAYOFYEAR('2024-03-04'); -- 결과: 64

 

2️⃣ 주 및 요일 관련

함수 설명 예제
WEEKOFYEAR(date) 연 기준 주차(1~53) SELECT WEEKOFYEAR('2024-03-04'); -- 결과: 10
WEEKDAY(date) 요일(0=월요일, 6=일요일) SELECT WEEKDAY('2024-03-04'); -- 결과: 0 (월요일)

 

3️⃣ 시간 관련

함수 설명 예제
HOUR(datetime) 시 추출 (0~23) SELECT HOUR('2024-03-04 15:30:00'); -- 결과: 15
MINUTE(datetime) 분 추출 (0~59) SELECT MINUTE('2024-03-04 15:30:00'); -- 결과: 30
SECOND(datetime) 초 추출 (0~59) SELECT SECOND('2024-03-04 15:30:45'); -- 결과: 45

 

4️⃣ 기타 날짜 연산 함수

함수 설명 예제
LAST_DAY(date) 해당 월의 마지막 날짜 SELECT LAST_DAY('2024-03-04'); -- 결과: 2024-03-31
DATE_ADD(date, INTERVAL n unit) 특정 기간 추가 SELECT DATE_ADD('2024-03-04', INTERVAL 1 MONTH); -- 결과: 2024-04-04
DATE_SUB(date, INTERVAL n unit) 특정 기간 감소 SELECT DATE_SUB('2024-03-04', INTERVAL 1 MONTH); -- 결과: 2024-02-04
DATEDIFF(date1, date2) 날짜 차이(일 단위) SELECT DATEDIFF('2024-03-04', '2024-01-01'); -- 결과: 63

 

5️⃣ 형식 변환

함수 설명 예제
DATE_FORMAT(date, format) 날짜 형식 변환 SELECT DATE_FORMAT('2024-03-04', '%Y-%m-%d'); -- 결과: 2024-03-04
STR_TO_DATE(string, format) 문자열을 날짜로 변환 SELECT STR_TO_DATE('2024-03-04', '%Y-%m-%d'); -- 결과: 2024-03-04

 

📌 활용 예시

 

📍 해당 날짜가 속한 분기와 연도 출력

SELECT 
    NOW() AS 현재_날짜,
    YEAR(NOW()) AS 연도,
    QUARTER(NOW()) AS 분기,
    MONTH(NOW()) AS 월;
 

 

📍 각 월의 첫째 날과 마지막 날 구하기

SELECT 
    DATE_FORMAT(NOW(), '%Y-%m-01') AS 첫째날, 
    LAST_DAY(NOW()) AS 마지막날;​
 
📍 최근 6개월 데이터를 가져오기
SELECT * FROM sales_data 
WHERE date >= DATE_SUB(NOW(), INTERVAL 6 MONTH);
 

 

📍 일주일 전의 날짜 구하기

SELECT DATE_SUB(NOW(), INTERVAL 7 DAY) AS 일주일전;​
 
이 외에도 EXTRACT(YEAR FROM date), TO_CHAR(date, 'YYYY-MM-DD')(PostgreSQL, Oracle) 등의 다양한 함수가 데이터베이스 종류에 따라 제공됩니다.

 

'SQL' 카테고리의 다른 글

SQL 정규 표현식(Regex) 정리 및 활용 예제  (0) 2025.01.29

관련글 더보기