Date Functions 날짜 관련 함수
날짜와 시간의 형식화
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
더보기
형태 | 설명 | 예시 |
%a | 요일을 세 개의 문자로 표현함. | Sun부터 Sat |
%b | 월의 축약형을 세 개의 문자로 표현함. | Jan부터 Dec |
%c | 월을 숫자로 표현함. | 0부터 12 |
%D | 날짜 뒤에 영어 서수를 붙임 | 0th, 1st, 2nd, 3rd, ... |
%d | 날짜를 두 자리 숫자로 표현함. | 00부터 31 |
%e | 날짜를 숫자로 표현함. | 0부터 31 |
%f | 마이크로초를 여섯 자리 숫자로 표현함. | 000000에서 999999 |
%H | 24시간 형식 시간을 두 자리 숫자로 표현함. | 00부터 23 |
%h | 12시간 형식 시간을 두 자리 숫자로 표현함. | 01부터 12 |
%I | 12시간 형식 시간을 두 자리 숫자로 표현함. | 01부터 12 |
%i | 분을 두 자리 숫자로 표현함. | 00부터 59 |
%j | 일 년 중 몇 번째 날인지를 세 자리 숫자로 표현함. | 001부터 366 |
%k | 24시간 형식으로 시간을 표현함. | 0부터 23 |
%l | 12시간 형식으로 시간을 표현함. | 1부터 12 |
%M | 월을 완전한 문자열로 표현함. | January부터 December |
%m | 월을 두 자리 숫자로 표현함. | 00부터 12 |
%p | 오전과 오후의 대문자를 표현함. | AM 또는 PM |
%r | hh:mm:ss AM/PM 형식으로 시간을 표현함. (12시간 형식) | 00:00:01 AM |
%S | 초를 두 자리 숫자로 표현함. | 00부터 59 |
%s | 초를 두 자리 숫자로 표현함. | 00부터 59 |
%T | hh:mm:ss 형식으로 시간을 표현함. (24시간 형식) | 23:01:01 |
%U | 일 년 중 몇 번째 주인지를 숫자로 표현함. (한 주는 일요일부터 시작함) | 00부터 53 |
%u | 일 년 중 몇 번째 주인지를 숫자로 표현함. (한 주는 월요일부터 시작함) | 00부터 53 |
%V | 일 년 중 몇 번째 주인지를 숫자로 표현함. (한 주는 일요일부터 시작하고, %X 형식을 사용함) |
00부터 53 |
%v | 일 년 중 몇 번째 주인지를 숫자로 표현함. (한 주는 월요일부터 시작하고, %x 형식을 사용함) |
00부터 53 |
%W | 요일을 완전한 문자열로 표현함. | Sunday부터 Saturday |
%w | 요일을 숫자로 표현함. | 0(일요일)부터 6(토요일) |
%X | 연도를 완전한 네 자리 숫자로 표현함. (한 주는 일요일부터 시작하고, %V 형식을 사용함) |
1999나 2003 |
%x | 연도를 완전한 네 자리 숫자로 표현함. (한 주는 월요일부터 시작하고, %v 형식을 사용함) |
1999나 2003 |
%Y | 연도를 완전한 네 자리 숫자로 표현함. | 1999나 2003 |
%y | 연도를 두 자리 숫자로 표현함. | 99나 03 |
%% | '%' 문자 | % |
연도별, 월별, 주별 일수
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'),
MONTH('2022-06-11 12:34:56'),
DAY('2022-06-11 12:34:56'),
HOUR('2022-06-11 12:34:56'),
MINUTE('2022-06-11 12:34:56'),
SECOND('2022-06-11 12:34:56');
-- 2022-06-11
-- 6
-- 11
-- 12
-- 34
-- 56
EXTRACT(part FROM date)
- 주어진 date에서 원하는 part에 해당하는 숫자를 반환
더보기
part에 들어갈 수 있는 표현
- MICROSECOND
- SECOND
- MINUTE
- HOUR
- DAY
- WEEK
- MONTH
- QUARTER
- YEAR
- SECOND_MICROSECOND
- MINUTE_MICROSECOND
- MINUTE_SECOND
- HOUR_MICROSECOND
- HOUR_SECOND
- HOUR_MINUTE
- DAY_MICROSECOND
- DAY_SECOND
- DAY_MINUTE
- DAY_HOUR
- YEAR_MONTH
현재 날짜와 시간 정보
NOW()
,CURRENT_TIMESTAMP()
- 현재 날짜와 시간 반환CURDATE()
,CURRENT_DATE()
- 현재 날짜 반환CURTIME()
,CURRENT_TIME()
- 현재 시각 반환
SELECT NOW(),
CURDATE(),
CURTIME();
-- YYYY-MM-DD HH:MM:SS
-- YYYY-MM-DD
-- HH:MM:SS
특정 날짜와 시간 연산
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),
ADDTIME("2022-06-11 12:34:56", "10 05:05");
-- 2022-06-21
-- 2022-06-21 17:39:56
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
※ 참고자료
http://www.tcpschool.com/mysql/mysql_builtInFunction_dateTime
'📚 Database' 카테고리의 다른 글
[MySQL] MySQL 조건문, null 함수, 타입 변환, 시스템 함수 (0) | 2022.06.11 |
---|---|
[MySQL] MySQL 숫자, 집계 함수 총정리 (0) | 2022.06.11 |
[MySQL] MySQL 문자열 함수 총정리 (0) | 2022.06.01 |
[MySQL] MySQL의 연산자(operator) (0) | 2022.06.01 |
[MySQL] SELECT QUERY (0) | 2022.06.01 |