[MariaDB] Build In Functions(3) - 날짜, 시간

chaeyeong·2025년 2월 5일

SQL

목록 보기
6/6

⏰ 날짜/시간 함수

(1) ADDDATE, SUBDATE

ADDDATE : 날짜를 기준으로 차이를 더한 날짜를 반환

SUBDATE : 날짜를 기준으로 차이를 뺀 날짜를 반환

SELECT
      ADDDATE('2023-05-31', INTERVAL 30 DAY)
    , ADDDATE('2023-05-31', INTERVAL 6 MONTH)
    , ADDDATE('2023-05-31', INTERVAL 1 YEAR)
    , SUBDATE('2023-05-31', INTERVAL 30 DAY)
    , SUBDATE('2023-05-31', INTERVAL 6 MONTH)
    , SUBDATE('2023-05-31', INTERVAL 30 YEAR);

(2) ADDTIME, SUBTIME

ADDTIME : 날짜 또는 시간을 기준으로 시간을 더한 후 반환

SUBTIME : 날짜 또는 시간을 기준으로 시간을 뺀 후 반환

SELECT
      ADDTIME('2023-05-31 09:00:00', '1:0:1')
    , SUBTIME('2023-05-31 09:00:00', '1:0:1');

(3) 현재 시스템 날짜/시간 반환

CURDATE : 현재 연-월-일 추출
CURTIME: 현재 시:분:초 추출
NOW() 또는 SYSDATE(): 현재 연-월-일 시:분:초 추출

SELECT CURDATE(), CURRENT_DATE(), CURRENT_DATE;
SELECT CURTIME(), CURRENT_TIME(), CURRENT_TIME;
SELECT NOW(), LOCALTIME, LOCALTIME(), LOCALTIMESTAMP, LOCALTIMESTAMP();

(4) YEAR, MONTH, DAYOFMONTH

YEAR|MONTH|DAYOFMONTH : 날짜 또는 시간에서 연, 월, 일 추출

SELECT YEAR(CURDATE()), MONTH(CURDATE()), DAYOFMONTH(CURDATE());

(5) HOUR, MINUTE, SECOND, MICROSECOND

HOUR|MINUTE|SECOND|MICROSECOND : 날짜 또는 시간에서 시, 분, 초, 밀리초 추출

SELECT HOUR(CURTIME()), MONTH(CURDATE()), DAYOFMONTH(CURDATE()),
MICROSECOND(CURTIME(6)); 

(6) DATE, TIME

DATE: 연-월-일만 추출
TIME: 시:분:초만 추출

SELECT DATE(NOW()), TIME(NOW());

(7) DATEDIFF, TIMEDIFF

DATEDIFF: 날짜1 - 날짜2의 일수를 반환
TIMEDIFF: 시간1 - 시간2의 결과를 반환

SELECT DATEDIFF('2023-05-31', '2023-02-27')
     , TIMEDIFF('17:07:11', '13:06:10');

(8) DAYOFWEEK, MONTHNAME, DAYOFYEAR

DAYOFWEEK: 요일 반환(1이 일요일)
MONTHNAME: 해당 달의 이름 반환
DAYOFYEAR: 해당 년도에서 몇 일이 흘렀는지 반환

SELECT DAYOFWEEK(CURDATE()), MONTHNAME(CURDATE()), DAYOFYEAR(CURDATE());

(9) LAST_DAY

LAST_DAY: 해당 날짜의 달에서 마지막 날의 날짜

SELECT LAST_DAY('2023-02-01');

(10) MAKEDATE, MAKETIME

MAKEDATE: 해당 연도의 정수만큼 지난 날짜
MAKETIME: 시, 분, 초를 이용해서 '시:분:초'의 TIME 형식으로 만듦

SELECT MAKEDATE(2023, 32), MAKETIME(17, 03, 02);

(11) QUARTER

QUARTER(날짜) : 해당 날짜의 분기를 구함

SELECT QUARTER('2023-05-01');

(12) TIME_TO_SEC

TIME_TO_SEC: 시간을 초 단위로 구함

SELECT TIME_TO_SEC('1:1:1');
profile
그래도 해야지 어떡해

0개의 댓글