Search

날짜 함수(Date Function)

대분류
DB
소분류
MySQL
수준
심화
태그
DATEDIFF
TIMEDIFF
최종 편집 일시
2024/10/27 15:23
생성 일시
2024/09/29 03:10
14 more properties

날짜 함수

날짜와 시간의 형식화

DATE_FORMAT(date, format) - 주어진 date를 format에 맞춰 문자열로 반환
SELECT DATE_FORMAT(hiredate, '%Y-%m-%d') FROM emp; -- YYYY-mm-dd SELECT DATE_FORMAT(hiredate, '%Y-%m-%d %T') FROM emp; SELECT DATE_FORMAT(hiredate, '%Y-%m-%d %H:%i:%s') FROM emp; -- YYYY-mm-dd 00:00:00
SQL
복사
포맷 형태

연도별, 월별, 주별 일수

DAYOFYEAR(date) - 주어진 date의 일자가 해당 연도에서 몇 번째 날인지 반환(1~366)
DAYOFMONTH(date) - 주어진 date의 일자가 해당 월에서 몇 번째 날인지 반환(0~31)
DAYOFWEEK(date) - 주어진 date의 일자가 해당 주에서 몇 번째 날인지 반환(일요일=1, 토요일=7)

특정 날짜와 시간 정보

DATE(expression) - 주어진 expression에 해당하는 날짜 정보 반환
MONTH(date) - 주어진 date에서 월에 해당하는 숫자를 반환(0~12)
DAY(date) - 주어진 date에서 일자에 해당하는 숫자를 반환(0~31)
HOUR(date) - 주어진 date에서 시간에 해당하는 숫자를 반환(0~23)
MINUTE(date) - 주어진 date에서 분에 해당하는 숫자를 반환(0~59)
SECOND(date) - 주어진 date에서 초에 해당하는 숫자를 반환(0~59)
WEEKDAY(date) - 주어진 date에서 요일에 해당하는 숫자를 반환(월요일=0, 일요일=6)
LAST_DAY(date) - 주어진 date에서 해당 월의 마지막 날짜 정보 반환
SEC_TO_TIME(seconds) - 주어진 seconds를 기준으로 시간 정보 반환(HH:MM:SS 형식)
SELECT DATE('2022-06-11 12:34:56') -- 2022-06-11 , MONTH('2022-06-11 12:34:56') -- 6 , DAY('2022-06-11 12:34:56') -- 11 , HOUR('2022-06-11 12:34:56') -- 12 , MINUTE('2022-06-11 12:34:56') -- 34 , SECOND('2022-06-11 12:34:56') -- 56 ;
SQL
복사
EXTRACT(part FROM date) - 주어진 date에서 원하는 part에 해당하는 숫자를 반환
단일 추출 part
설명
함께 추출 part
설명
MICROSECOND
마이크로초 단위의 값
SECOND_MICROSECOND
초와 마이크로초 단위의 값
SECOND
초 단위의 값
MINUTE_MICROSECOND
분과 마이크로초 단위의 값
MINUTE
분 단위의 값
MINUTE_SECOND
분과 초 단위의 값
HOUR
시간 단위의 값
HOUR_MICROSECOND
시간과 마이크로초 단위의 값
DAY
일 단위의 값
HOUR_SECOND
시간과 초 단위의 값
WEEK
주 단위의 값
HOUR_MINUTE
시간과 분 단위의 값
MONTH
월 단위의 값
DAY_MICROSECOND
일과 마이크로초 단위의 값
QUARTER_HOUR
15분 단위의 값 (분기 시간)
DAY_SECOND
일과 초 단위의 값
YEAR
연도 단위의 값
DAY_MINUTE
일과 분 단위의 값
DAY
일 단위의 값 (요일 포함 아님)
YEAR_MONTH
연도와 월 단위의 값

현재 날짜와 시간 정보

NOW(), CURRENT_TIMESTAMP() - 현재 날짜와 시간 반환
CURDATE(), CURRENT_DATE() - 현재 날짜 반환
CURTIME(), CURRENT_TIME() - 현재 시각 반환
SELECT NOW() -- YYYY-MM-DD HH:MM:SS , CURDATE() -- YYYY-MM-DD , CURTIME() -- HH:MM:SS ;
SQL
복사

특정 날짜와 시간 연산

ADDDATE(date, INTERVAL value addunit) - date에 value addunit 만큼 시간/날짜를 추가한 date를 반환(INTERVAL value addunit 대신 days도 가능)
ADDTIEM(datetime, addtime) - datetime에 addtime 만큼 시간을 추가한 datetime을 반환
SUBDATE(date, INTERVAL value unit) - date에 value addunit 만큼 시간/날짜를 뺀 date를 반환(INTERVAL value addunit 대신 days도 가능)
SUBTIEM(datetime, addtime) - datetime에 addtime 만큼 시간을 뺀 datetime을 반환
SELECT ADDDATE("2022-06-11", INTERVAL 10 DAY) -- 2022-06-21 , ADDTIME("2022-06-11 12:34:56", "10 05:05") -- 2022-06-21 17:39:56 ;
SQL
복사
PERIOD_ADD(period, number) - 주어진 period에 number만큼 월을 추가한 숫자를 반환(period의 형식은 YYMM 또는 YYYYMM만 가능)

특정 날짜나 시간의 차이 연산

PERIOD_DIFF(period1, period2) - 두 기간의 차이를 숫자로 반환(period의 형식은 YYMM 또는 YYYYMM만 가능, period1과 period2는 같은 형식이어야 함)
DATEDIFF(date1, date2) - 두 날짜 사이의 일수를 숫자로 반환(date1 - date2)
TIMEDIFF(time1, time2) - 두 시간의 차이를 datetime 형태로 반환(time1 - time2)
SELECT PERIOD_DIFF(202206, 202201); -- 5 SELECT DATEDIFF(CURDATE(), '2021-06-11'); -- 365 SELECT TIMEDIFF('2022-06-21 12:34:56', '2022-06-11 12:34:56'); -- 240:00:00
SQL
복사