본문 바로가기
👩🏻‍💻TECH/SQL

[SQL] 자주 쓰는 시간 추출 SQL 총정리 (MySQL)

by Alicia03 2025. 2. 24.

자주 쓰는 시간 추출 SQL 총정리 (MySQL)

💡이번 포스팅에서는 이런 것들을 다뤄요
이번 포스팅에서는 자주쓰는 시간 추출 SQL 명령어와 MySQL 예제를 정리해보았습니다. 

 

👀시간 추출 SQL 한눈에 보기

구문
YEAR() 연도(Year) 추출
MONTH() 월(Month) 추출
DAY() 일(Day) 추출
HOUR() 시(Hour) 추출
MINUTE() 분(Minute) 추출
SECOND() 초(Second) 추출
WEEKDAY() 요일을 숫자로 반환 (월=0, 일=6)
DAYNAME() 요일을 문자열로 반환 (Monday~Sunday)
MONTHNAME() 월을 문자열로 반환 (January~December)
CURDATE() 현재 날짜 (YYYY-MM-DD) 반환
CURTIME() 현재 시간 (HH:MM:SS) 반환
NOW() 현재 날짜 및 시간 반환 (YYYY-MM-DD HH:MM:SS)
EXTRACT() 특정 날짜 요소(연도, 월, 일 등) 추출

 

✍🏻자주 쓰는 시간 추출 SQL 과 예문

시간 데이터(DATE, DATETIME, TIMESTAMP)에서 SQL문으로 특정 시간을 추출하거나 출력하는 명령어를 알아보자.

1. YEAR()

 YEAR()는 데이터에서 연도(YEAR) 값을 추출한다. 

-- 특정 TIMESTAMP 데이터에서 연도 가져오기
SELECT YEAR('2025-02-24 14:30:00') AS year_value;

-- 날짜 컬럼에서 연도 가져오기
SELECT 
	YEAR(date_col) AS year_value 
	FROM table_name;

-- 현재 연도 가져오기
SELECT YEAR(NOW()) AS current_year;

 

2. MONTH()

MONTH()는 데이터에서 월(Month)값을 추출한다.

-- 특정 TIMESTAMP 데이터에서 월 가져오기
SELECT MONTH('2025-02-24 14:30:00') AS month_value;

-- 날짜 컬럼에서 월 가져오기
SELECT 
	MONTH(date_col) AS month_value 
	FROM table_name;

-- 현재 월 가져오기
SELECT MONTH(NOW()) AS current_month;

 

3. DAY()

DAY()는 데이터에서 일(Day) 값을 추출한다. 

-- 특정 TIMESTAMP 데이터에서 일 가져오기
SELECT DAY('2025-02-24 14:30:00') AS day_value;

-- 날짜 컬럼에서 일 가져오기
SELECT 
	DAY(date_col) AS day_value 
	FROM table_name;

-- 현재 일 가져오기
SELECT DAY(NOW()) AS current_day;

 

4. HOUR()

HOUR()은 데이터에서 시(hour) 값을 추출한다.

-- 특정 TIMESTAMP 데이터에서 시 가져오기
SELECT HOUR('2025-02-24 14:30:00') AS hour_value;

-- 날짜/시간 컬럼에서 시 가져오기
SELECT 
	HOUR(datetime_col) AS hour_value 
	FROM table_name;

-- 현재 시 가져오기
SELECT HOUR(NOW()) AS current_hour;

 

5. MINUTE()

MIMUTE()는 데이터에서 분(minute) 값을 추출한다. 

-- 특정 TIMESTAMP 데이터에서 분 가져오기
SELECT MINUTE('2025-02-24 14:30:45') AS minute_value;

-- 날짜/시간 컬럼에서 분 가져오기
SELECT 
	MINUTE(datetime_col) AS minute_value 
	FROM table_name;

-- 현재 분 가져오기
SELECT MINUTE(NOW()) AS current_minute;

 

6. SECOND()

SECOND()는 데이터에서 초(second) 값을 추출한다. 

-- 특정 TIMESTAMP 데이터에서 초 가져오기
SELECT SECOND('2025-02-24 14:30:45') AS second_value;

-- 시간 데이터가 있는 컬럼에서 초 가져오기
SELECT 
	SECOND(time_col) AS second_value 
	FROM table_name;

-- 현재 초 가져오기
SELECT SECOND(NOW()) AS current_second;

 

7. WEEKDAY()

WEEKDAY()는 데이터에서 요일을 가져오며 월요일(0) ~ 일요일 (6) 형태로 반환한다. 

-- 특정 TIMESTAMP 데이터에서 요일(0=월요일, 6=일요일) 가져오기
SELECT WEEKDAY('2025-02-24 14:30:00') AS weekday_value;

-- 날짜 컬럼에서 요일 가져오기
SELECT 
	WEEKDAY(date_col) AS weekday_value 
	FROM table_name;

-- 현재 날짜의 요일 가져오기
SELECT WEEKDAY(NOW()) AS current_weekday;

 

8. DAYNAME()

DAYNAME()은 요일을 문자열(Sunday ~ Saturday) 형태로 반환한다.

-- 특정 TIMESTAMP 데이터에서 요일 이름 가져오기
SELECT DAYNAME('2025-02-24 14:30:00') AS day_name;

-- 날짜 컬럼에서 요일 이름 가져오기
SELECT 
	DAYNAME(date_col) AS day_name 
	FROM table_name;

-- 현재 날짜의 요일 이름 가져오기
SELECT DAYNAME(NOW()) AS current_dayname;

 

9. MONTHNAME()

MONTHNAME()은 월을 문자열(January ~ December) 형태로 반환한다.

-- 특정 TIMESTAMP 데이터에서 월 이름 가져오기
SELECT MONTHNAME('2025-02-24 14:30:00') AS month_name;

-- 날짜 컬럼에서 월 이름 가져오기
SELECT 
	MONTHNAME(date_col) AS month_name 
	FROM table_name;

-- 현재 날짜의 월 이름 가져오기
SELECT MONTHNAME(NOW()) AS current_monthname;

 

 

10. CURDATE()

CURDATE()는 현재 날짜(YYYY-MM-DD)를 반환한다. (cur은 current를 뜻함)

-- 현재 날짜 가져오기 
SELECT CURDATE() AS today_date;

-- 결과: 2025-02-24 (현재 날짜)

 

11. CURTIME()

CURTIME()은 현재 시간(HH:MM:SS)을 반환한다. 

-- 현재 시간 가져오기 
SELECT CURTIME() AS current_time;  

-- 결과: 14:30:45 (현재 시간)

 

12. NOW()

NOW()는 현재 날짜와 시간(YYYY-MM-DD HH:MM:SS)을 반환한다. 

-- 현재 날짜와 시간 가져오기
SELECT NOW() AS current_datetime;  

-- 결과: 2025-02-24 14:30:45 (현재 날짜 및 시간)

 

13. EXTRACT()

EXTRACT()는 날짜 또는 시간에서 특정 부분(연도, 월, 일, 시, 분 등)을 추출한다. 

--연도 가져오기 
SELECT EXTRACT(YEAR FROM '2025-02-24') AS year_value;  

--월 가져오기
SELECT EXTRACT(MONTH FROM '2025-02-24') AS month_value; -

--일 가져오기
SELECT EXTRACT(DAY FROM '2025-02-24') AS day_value;    

--시 가져오기 
SELECT EXTRACT(HOUR FROM '2025-02-24 14:30:45') AS hour_value;

--분 가져오기 
SELECT EXTRACT(MINUTE FROM '2025-02-24 14:30:45') AS minute_value;

--초 가져오기
SELECT EXTRACT(SECOND FROM '2025-02-24 14:30:45') AS second_value;

--YEAR-MONTH-DAY 함께 가져오기
SELECT 
    EXTRACT(YEAR FROM '2025-02-24 14:30:45') AS year_value,
    EXTRACT(MONTH FROM '2025-02-24 14:30:45') AS month_value,
    EXTRACT(DAY FROM '2025-02-24 14:30:45') AS day_value;

--HOUR-MINUTE-SECOND 함께 가져오기
SELECT 
    EXTRACT(HOUR FROM '2025-02-24 14:30:45') AS hour_value,
    EXTRACT(MINUTE FROM '2025-02-24 14:30:45') AS minute_value,
    EXTRACT(SECOND FROM '2025-02-24 14:30:45') AS second_value;

--NOW()와 함께 사용 (현재 시각 기준)
SELECT 
    EXTRACT(YEAR FROM NOW()) AS current_year,
    EXTRACT(MONTH FROM NOW()) AS current_month,
    EXTRACT(DAY FROM NOW()) AS current_day,
    EXTRACT(HOUR FROM NOW()) AS current_hour,
    EXTRACT(MINUTE FROM NOW()) AS current_minute,
    EXTRACT(SECOND FROM NOW()) AS current_second;