SQL 함수 사용하기 (단일 행 함수의 날짜/시간형 함수)
22 Jul 2025 | SQL개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
날짜/시간형 함수
현재 시간 혹은 시간 데이터를 가공해 정보를 얻을 떄 사용
NOW, SYSDATE, CURDATE, CURTIME
- NOW(), SYSDATE(): 현재 날짜, 시간을 출력
- CURDATE(): 현재 날짜를 출력
- CURTIME(): 현재 시간을 출력
SELECT NOW(), SYSDATE(), CURDATE(), CURTIME();
YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, QUATER
- YEAR(date), MONTH(date), DAY(date), QUATER(date): 년, 월, 일, 분기
- HOUR(date), MINUTE(date), SECOND(date): 시, 분, 초
SELECT YEAR(NOW()), MONTH(NOW()), DAY(NOW()), QUATER(NOW());
SELECT HOUR(NOW()), MINUTE(NOW()), SECOND(NOW());
DATEDIFF, TIMESTAMPDIFF
- DATEDIFF(끝일자, 시작일자): 기간을 일자 기준으로 반환
- TIMESTAMPDIFF(단위, 시작일자, 끝일자): 기간을 지정한 단위 기준으로 반환
-- 문제1: 지금 시간으로부터 2000-01-31와의 일 차이
SELECT DATEDIFF(NOW(), '2000-01-31'); -- 9304
SELECT TIMESTAMPDIFF(day, '2000-01-31', NOW());
-- 문제2: 만나이, 태어난지 몇달, 태어난지 몇일
SELECT TIMESTAMPDIFF(year, '2000-01-31', NOW()); -- 25
SELECT TIMESTAMPDIFF(month, '2000-01-31', NOW()); -- 305
SELECT TIMESTAMPDIFF(day, '2000-01-31', NOW()); -- 9304
ADDDATE, SUBDATE
- ADDDATE(date, interval 기간 단위): 지정한 날짜를 기준으로 그 기간만큼 더한 날짜 반환
- SUBDATE(date, interval 기간 단위): 지정한 날짜를 기준으로 그 기간만큼 뺀 날짜 반환
SELECT ADDDATE(NOW(), 50);
SELECT ADDDATE(NOW(), interval 50);
-- 오늘날짜로 50일 전
SELECT SUBDATE(NOW(), interval 50 day);
LAST_DAY, DAYOFYEAR, MONTHNAME
- LAST_DAY(date): 해당월의 마지막 일자 반환
- DAYOFYEAR(date): 현재 년도에서 몇일이 지났는지 반환
- MONTHNAME(date): 월을 영문으로 반환
- WEEKDAY(date): 요일을 정수로 반환
SELECT LAST_DAY('2025-02-03'); -- 2025-02-28
SELECT DAYOFYEAR(NOW()); -- 203
SELECT MONTHNAME(NOW()); -- July
SELECT WEEKDAY(NOW()); -- 1(화요일)