날짜 함수
날짜와 시간의 형식화
•
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
복사