📕🐘 도로락 - 코끼리를 냉장고에 넣는 방법
데이터베이스[DB] | 2018. 3. 21. 05:00

[MySQL] MySQL 날짜 및 시간 함수

ADDTIME(날짜/시간, 더할 시간), SUBTIME(날짜/시간, 뺄 시간)

날짜/시간에 더할 시간만큼 더하거나, 뺄 시간 만큼 빼서 반환합니다.

SELECT ADDTIME('2018-03-20 10:30:20', '1:10:10');; -- 1시간 10분 10초 더함 >> 2018-03-20 11:40:30 
SELECT SUBTIME('2018-03-20 10:30:20', '1:10:10'); -- 1시간 10분 10초 뺌 >> 2018-03-20 09:20:10

ADDDATE(날짜/시간, 더할 날짜), SUBDATE(날짜/시간, 뺄 날짜)

날짜/시간에 날짜를 더하거나, 빼서 반환합니다.

SELECT ADDDATE('2018-03-20 10:30:20', INTERVAL 30 DAY); -- 2018-04-19 10:30:20 
SELECT SUBDATE('2018-03-20 10:30:20', INTERVAL 30 DAY); -- 2018-02-18 10:30:20 

CURDATE(), CURTIME(), NOW(), SYSDATE()

SELECT CURDATE(); -- 현재 연도-월-일 반환 >> 2018-03-21
SELECT CURTIME(); -- 현재 시:분:초 반환 >> 12:32:04
SELECT NOW(); --현재 날짜 및 시간을 반환 >> 2018-03-21 12:32:04
SELECT SYSDATE(); -- 현재 날짜 및 시간을 반환 >> 2018-03-21 12:32:04

YEAR(날짜), MONTH(날짜), DAY(날짜), HOUR(시간), MINUTE(시간), SECOND(시간), MICROSECOND(시간)

매개변수로 준 날짜, 시간에서 연, 월, 일, 시, 분, 초, 마이크로세컨트(1/1000000) 를 추출합니다.

SELECT NOW();            -- 2018-03-21 00:48:30
SELECT YEAR(NOW());    -- 2018
SELECT MONTH(NOW()); -- 3
SELECT DAY(NOW());      -- 21
SELECT CURTIME();         -- 00:49:13
SELECT HOUR(CURTIME()); -- 0
SELECT MINUTE(CURTIME()); -- 49
SELECT SECOND(CURTIME()); -- 13
SELECT MICROSECOND('13:15:30.0003'); -- 300

DATE(날짜/시간), TIME(날짜/시간)

날짜/시간에서 날짜, 또는 시간만을 추출하여 반환합니다.

SELECT DATE('2018-03-21 00:53:46'); -- 2018-03-21
SELECT TIME('2018-03-21 00:53:46'); -- 00:53:46

DATEDIFF(날짜1, 날짜2), TIMEDIFF(날짜1 또는 시간1, 날짜2 또는 시간2)

날짜2를 기준으로 날짜1의 차이를 구합니다.

SELECT DATEDIFF('2018-01-01 00:00:00', '2018-01-06 00:00:00'); -- 날짜2를 기준으로 날짜1은 -4이므로 -4 반환
SELECT TIMEDIFF('2018-01-01 00:00:00', '2018-01-02 00:00:00'); -- 날짜/시간2를 기준으로 날짜/시간1은 하루 전이므로 -24 반환

DAYOFWEEK(날짜), MONTHNAME(), DAYOFYEAR(날짜)

요일을 정수로 반환합니다. (일요일 -> 1, 월요일 -> 2, 수요일 -> 4)

해당 월의 영문명을 반환합니다.

1년 중 몇 번째 날짜인지 구합니다.

SELECT DAYOFWEEK('2018-01-01'); -- 1월1일은 월요일 --> 2 반환
SELECT MONTHNAME('2018-01-01'); -- January
SELECT DAYOFYEAR('2018-02-01'); -- 2월 1일은 2018년도의 32일째 날이므로 32 반환

LAST_DAY(날짜)

주어진 달의 마지막 날짜를 구합니다.

SELECT LAST_DAY('2018-01-01'); -- 2018-01-31

MAKEDATE(연도, 숫자)

그해 연도가 시작된 1월 1일을 기준으로 숫자 만큼 지난 날의 날짜를 구합니다.

SELECT MAKEDATE(2018, 10); -- 2018-01-10

MAKETIME(시, 분, 초)

시, 분, 초를 TIME으로 만들어 반환합니다.

SELECT MAKETIME(12, 10, 30); -- 12:10:30

PERIOD_ADD(YYYYMM, 개월 수), PERIOD_DIFF(YYYYMM, YYYYMM)

PERIOD_ADD()는 연월에서 개월 수 만큼의 지는 연월을 구합니다.

PERIOD_DIFF는 첫 번째 연월 - 두 번째 연월 을 계산한 개월 수를 구합니다.

SELECT PERIOD_ADD(201701, 12); -- 201801
SELECT PERIOD_DIFF(201701, 201801); -- -12

QUARTER(날짜)

연도를 4분기로 나누었을 때 날짜가 몇 분기인지를 구합니다.

SELECT QUARTER('2018-04-01'); -- 2

TIME_TO_SEC(시간)

00:00:00을 기준으로 흐른 시간을 초 단위로 바꿔 반환합니다.

SELECT TIME_TO_SEC('01:10:30'); -- 3600 + 600 + 30 >> 4230

추가 함수 정보

https://dev.mysql.com/doc/refman/5.7/en/func-op-summary-ref.html

도로락

도로락

Writer

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그