DATE_FORMAT()
날짜/시간 형식화, 주어진 date를 format에 맞게 문자열로 반환
SELECT DATE_FORMAT('1999-05-24', '%y %m %d'); -- 99 05 24
SELECT DATE_FORMAT('1999-05-24', '%Y %M %D'); -- 1999 May 24th
SELECT DATE_FORMAT(NOW(), "%b %m %D %H %i %s"); -- Sep 09 5th 10 02 28
CURDATE()
, CURRENT_DATE()
system의 현재 날짜 출력
SELECT CURDATE();
SELECT CURRENT_DATE();
SELECT CURDATE()+1; -- 연산 가능
CURTIME()
, CURRENT_TIME()
system의 현재 시각 출력
SELECT CURTIME();
SELECT CURRENT_TIME();
NOW()
, CURRENT_TIMESTAMP()
system의 현재 날짜와 시간 출력
SELECT NOW();
YEAR()
, MONTH()
, DAY()
, WEEKDAY()
년/월/일/요일 추출
YEAR() = DAYOFYEAR()
MONTH() = DAYOFMONTH()
DAY() = DAYOFMONTH()
SELECT YEAR(hiredate), MONTH(hiredate), DAY(hiredate) FROM emp;
SELECT WEEKDAY("2017-01-01"); -- 월요일 0 ~ 일요일 6
HOUR()
, MINUTE()
, SECOND()
시/분/초 추출
SELECT HOUR(NOW()), MINUTE(NOW()), SECOND(NOW());
DAYOFWEEK()
, DAYNAME()
해당 주에서 몇 번째 날인지 반환
SELECT DAYOFWEEK("2017-06-15"); -- 5(숫자로 반환), 일요일 1 ~ 토요일 7
SELECT DAYNAME("2017-06-15"); -- Thursday(문자로 반환)
ADDDATE()
, DATE_ADD()
, ADDTIME()
연, 월, 일, 시간 더하기
-- ADDDATE(date, INTERVAL value addunit)
SELECT ADDDATE(CURDATE(), INTERVAL 1 DAY);
SELECT ADDDATE(CURDATE(), INTERVAL 1 MONTH);
SELECT ADDDATE(CURDATE(), INTERVAL -1 YEAR);
SELECT DATE_ADD(CURDATE(), INTERVAL -1 YEAR);
SELECT ADDDATE(hiredate, 2) FROM emp; -- value만 있을 때, day가 defalt
-- ADDTIEM(datetime, addtime)
SELECT ADDTIME(CURTIME(), '1:10:5'); -- add 1 hour 10 minute 5 second
SELECT ADDTIME(NOW(), '2 1:10:5'); -- add 2 day 1 hour 10 minute 5 second
SUBDATE()
, DATE_SUB()
, SUBTIME()
연, 월, 일, 시간 빼기
-- SUBDATE(date, INTERVAL value unit)
SELECT SUBDATE("2017-06-15 09:34:21", INTERVAL 15 MINUTE);
SELECT SUBDATE("2017-06-15", INTERVAL -2 MONTH);
-- SUBTIEM(datetime, addtime)
SELECT SUBTIME("10:24:21", "5"); -- minus 5 second
SELECT SUBTIME("10:24:21", "3:2:5"); -- minus 3 hour 2 minute 5 second
EXTRACT()
DATE_ADD, DATE_SUB 와 흡사한 기능을 수행하며, 날짜의 일부를 반환
-- EXTRACT(UNIT FROM DATE);
SELECT CURDATE(), EXTRACT(MONTH FROM CURDATE()) AS MONTH; -- month 반환
SELECT CURDATE(), EXTRACT(YEAR FROM CURDATE()) AS YEAR; -- year 반환
SELECT CURDATE(), EXTRACT(DAY FROM CURDATE()) AS DAY; -- day 반환
SELECT CURDATE(), EXTRACT(WEEK FROM CURDATE()) AS WEEK; -- week 반환
SELECT CURDATE(), EXTRACT(QUARTER FROM CURDATE()) AS QUARTER; -- quarter 반환
SELECT CURDATE(), EXTRACT(YEAR_MONTH FROM CURDATE()) AS "YEAR_MONTH";
SELECT NOW(), EXTRACT(HOUR FROM CURDATE()) AS HOUR;
SELECT NOW(), EXTRACT(MINUTE FROM CURDATE()) AS MINUTE;
SELECT NOW(), EXTRACT(SECOND FROM CURDATE()) AS SECOND;
TIME_TO_SEC()
시간을 초로 변환
SELECT CURTIME(), TIME_TO_SEC(CURTIME());
DATEDIFF()
두 날짜 사이의 일수를 숫자로 반환(date1 - date2)
-- DATEDIFF(date1, date2) -> date1 - date2
SELECT hiredate, DATEDIFF(CURDATE(), hirdate) FROM emp;
SELECT DATEDIFF(CURDATE(), '1999-05-24') 일수 FROM emp;
TIMEDIFF()
두 시간의 차이를 datetime 형태로 반환(time1 - time2)
-- TIMEDIFF(time1, time2) -> time1 - time2
SELECT CURTIME(), TIMEDIFF(CURTIME(), '08:48:27');
SELECT TIME_TO_SEC(TIMEDIFF(CURTIME(), '08:48:27'));