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(화요일)