DATE
: YYYY-MM-DDDATETIME
: YYYY-MM-DD HH:MI:SSTIMESTAMP
: YYYY-MM-DD HH:MI:SSYEAR
: YYYY or YYDATE
: YYYY-MM-DDDATETIME
: YYYY-MM-DD HH:MI:SSSMALLDATETIME
: YYYY-MM-DD HH:MI:SSTIMESTAMP
: a unique numberDATE_FORMAT(date, format)
: 날짜를 포맷에 맞춰 문자열로 전환SELECT DATE_FORMAT(date, '%Y-%m-%d') FROM table;
-- YYYY-mm-dd
SELECT DATE_FORMAT(date, '%Y-%m-%d %T') FROM table;
SELECT DATE_FORMAT(date, '%Y-%m-%d %H:%i:%s') FROM table;
-- YYYY-mm-dd 00:00:00
DAYOFYEAR(date)
: 주어진 date의 일자가 해당 연도에서 몇 번째 날인지 반환DAYOFMONTH(date)
: 주어진 date의 일자가 해당 월에서 몇 번째 날인지 반환DAYOFWEEK(date)
: 주어진 date의 일자가 해당 주에서 몇 번째 날인지 반환DATE(expression)
: 주어진 expression에 해당하는 날짜 정보 반환SELECT DATE("2017-06-15 09:34:21");
→ 2017-06-15SELECT DATE("The date is 2017-06-15");
→ NULLMONTH(date)
: 주어진 date에서 월에 해당하는 숫자를 반환WEEKDAY(date)
: 주어진 date에서 요일에 해당하는 숫자를 반환LAST_DAY(date)
: 주어진 date에서 해당 월의 마지막 날짜 정보 반환SEC_TO_TIME(seconds)
: 주어진 seconds를 기준으로 시간 정보 반환EXTRACT(part FROM date)
: 주어진 date에서 원하는 part에 해당하는 숫자 반환NOW()
, CURRENT_TIMESTAMP()
: 현재 날짜와 시간 반환CURDATE()
, CURRENT_DATE()
: 현재 날짜 반환CURTIME()
, CURRENT_TIME()
: 현재 시각 반환ADDDATE(date, INTERVAL value addunit)
: date에 value addunit만큼 시간/날짜를 추가한 date를 반환ADDTIME(datetime, addtime)
SUBDATE(date, INTERVAL value unit)
SUBTIME(datetime, addtime)
PERIOD_ADD(period, number)
: 주어진 period에 number만큼 월을 추가한 숫자를 반환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
ADDDATE() vs DATE_ADD() in MySQL
ADDDATE()는 두번째 인자에서 INTERVAL과 함께 사용되면 DATE_ADD()의 별칭이 된다. 마찬가지로 SUBDATE()는 DATE_SUB()의 별칭이다.
DATE_ADD() → DATE_ADD(date,INTERVAL expr unit)
ADDDATE() → ADDDATE(date,INTERVAL expr unit) or ADDDATE(expr,days)
This second form is only available when using the ADDDATE() function, and it allows you to use a shorthand way to specify the number of days to add to the date.
PERIOD_DIFF(period1, period2)
: 두 기간의 차이를 숫자로 반환DATEDIFF(date1, date2)
: 두 날짜 사이의 일수를 숫자로 반환(date1 - date2)TIMEDIFF(time1, timd2)
id | name | major | hire_date |
---|---|---|---|
1 | 르탄이 | 피부과 | 2018-05-10 |
2 | 배캠이 | 성형외과 | 2019-06-15 |
3 | 구구이 | 안과 | 2020-07-20 |
→ doctors 테이블
doctors
테이블에서 현재 날짜 기준으로 5년 이상 근무(hire_date)한 의사 수를 계산하는 쿼리SELECT COUNT(*) num_of_doctors
FROM doctors
WHERE hire_date <= SUBDATE(CURDATE(), INTERVAL 5 YEAR);
doctors
테이블에서 각 의사의 근무 기간을 계산하는 쿼리SELECT name, DATEDIFF(CURDATE(), hire_date) working_days
FROM doctors;