💡이번 포스팅에서는 이런 것들을 다뤄요
이번 포스팅에서는 자주쓰는 시간 추출 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;