Database/MySQL

[MySQL] 내장 함수 - 날짜 및 시간 함수

IT수정 2024. 9. 11. 10:58

날짜 및 시간 함수

  • ADDDATE(날짜, 차이), SUBDATE(날짜, 차이) : 날짜를 기준으로 차이를 더하거나 뺀 날짜를 구함
SELECT ADDDATE('2025-01-01', INTERVAL 31 DAY), ADDDATE('2025-01-01', INTERVAL 1 MONTH);
-- 2025-02-01, 2025-02-01
SELECT SUBDATE('2025-01-01', INTERVAL 31 DAY), SUBDATE('2025-01-01', INTERVAL 1 MONTH);
-- 2024-12-01, 2024-12-01

 

  • ADDTIME(날짜/시간, 시간), SUBTIME(날짜/시간, 시간) : 날짜/시간을 기준으로 시간을 더하거나 뺀 결과
SELECT ADDTIME('2025-01-01 23:59:59', '1:1:1'), ADDTIME('15:00:00', '2:10:10');
-- 2025-01-02 01:01:00, 17:10:10
SELECT SUBTIME('2025-01-01 23:59:59', '1:1:1'), SUBTIME('15:00:00', '2:10:10');
-- 2025-01-01 22:58:58, 12:49:50

 

  • CURDATE() : 현재 년 - 월 - 일
  • CURTIME() : 현재 시 : 분 : 초
  • NOW(), SYSDATE() : 현재 년 - 월 - 일, 시 : 분 : 초
  • YEAR(날짜), MONTH(날짜), DAY(날짜) : 날짜에서 년, 월, 일을 구함
  • HOUR(시간), MINUTE(시간), SECOND(시간), MICROSECOUND(시간) : 시간에서 시, 분, 초, 밀리초를 구함
SELECT YEAR(CURDATE()), MONTH(CURDATE()), DAY(CURDATE());
SELECT HOUR(CURTIME()), MINUTE(CURTIME()), SECOND(CURTIME()), MICROSECOND(CURTIME());

 

  • DATE(), TIME() : DATETIME 형식에서 년 - 월 - 일 및 시 : 분 : 초만 추출함
SELECT DATE(NOW()), TIME(NOW());

 

  • DATEDIFF(날짜1, 날짜2) : 날짜1 - 날짜2의 일수를 결과로 구함. 즉 날짜2에서 날짜1까지 며칠 남았는지 구함
  • TIMEDIFF(날짜1 또는 시간1, 날짜2 또는 시간2) : 시간1-시간2의 결과를 구함
SELECT DATEDIFF('2025-01-01', NOW()), TIMEDIFF('23:23:59', '12:11:10');
-- 2025-01-01에서 오늘의 날짜를 뺀 일자, 11:12:49

 

  • DAYOFWEEK(날짜), MONTHNAME(), DAYOFYEAR(날짜) : 요일(1:일, 2:월~7:토) 및 1년 중 몇 번째 날짜인지 구함
SELECT DAYOFWEEK(CURDATE()), MONTHNAME(CURDATE()), DAYOFYEAR(CURDATE());
-- 현재 요일(숫자), 현재 달, 현재 일년 중 며칠이 지났는지

 

  • LAST_DAY(날짜) : 주어진 날짜의 마지막 날짜를 구함. 주로 그 달이 며칠까지 있는지 확인할 때 사용
SELECT LAST_DAY('2025-02-01'); -- 2025-02-28

 

  • MAKEDATE(연도, 정수) : 연도에서 정수만큼 지난 날짜를 구함
SELECT MAKEDATE(2025, 32); -- 2025-02-01

 

  • MAKETIME(시, 분, 초) : 시, 분, 초를 이용해서 '시:분:초'의 TIME 형식을 만듦
SELECT MAKETIME(12, 11, 10); -- 12:11:10

 

  • PERIOD_ADD(연월, 개월수) : 연월에서 개월만큼의 개월이 지난 연월을 구함. 연월은 YYYY 또는 YYYYMM 형식
  • PERIOD_DIFF(연월1, 연월2) : 연월1 - 연월2의 개월수를 구함
SELECT PERIOD_ADD(202501, 11), PERIOD_DIFF(202501, 202312); -- 202512, 13

 

  • QUARTER(날짜) : 날짜가 4분기 중에서 몇 분기인지를 구함
SELECT QUARTER('2025-07-07'); -- 3

 

  • TIME_TO_SEC(시간) : 시간을 초 단위로 구함
SELECT TIME_TO_SEC('12:11:10'); -- 43870

'Database > MySQL' 카테고리의 다른 글

[MySQL] 제약 조건  (0) 2024.09.12
[MySQL] 내부 함수 - 시스템 정보 함수  (0) 2024.09.11
[MySQL] 내장 함수 - 수학 함수  (0) 2024.09.11
[MySQL] 공통 테이블 식  (0) 2024.09.10
[MySQL] 서브 쿼리  (0) 2024.09.10