SQL
[MySQL] #9 단일 행 함수 (3) 날짜 함수
째아
2023. 1. 16. 15:16
-- 3. 날짜함수
-- 현재 날짜 (년, 월, 일)
SELECT curdate();
SELECT current_date();
SELECT DATE('2023-01-16');
-- 현재 시간 (시, 분, 초)
SELECT curtime();
SELECT current_time();
-- 현재 날짜와 시간 (년, 월, 일, 시, 분, 초)
SELECT now();
SELECT sysdate();
-- year(), month(), day()
-- weekday(): 0 월요일, 6 일요일
SELECT year(curdate());
SELECT month(curdate());
SELECT day(curdate());
SELECT weekday(curdate());
-- 날짜 형식 변환
SELECT date_format(curdate(), '%Y %m %d') today;
날짜 연산
날짜 + 숫자 = 날짜
날짜 - 숫자 = 날짜
날짜 - 날짜 = 기간(일수)
-- 계산은 되나 날짜 형식이 아닌 숫자로 계산됨
SELECT curdate() + 1 tomorrow;
SELECT curdate() - 1 yesterday;
-- date_add: 날짜에 숫자 더하기
SELECT date_add(curdate(), interval 1 year);
SELECT date_add(curdate(), interval 1 month);
SELECT date_add(curdate(), interval 100 day);
SELECT date_add(now(), interval 1 hour);
SELECT date_add(now(), interval 1 minute);
SELECT date_add(now(), interval 1 second);
-- date_sub: 날짜에 숫자 뺴기
SELECT date_sub(curdate(), interval 1 year);
SELECT date_sub(curdate(), interval 1 month);
SELECT date_sub(curdate(), interval 100 day);
SELECT date_sub(now(), interval 1 hour);
SELECT date_sub(now(), interval 1 minute);
SELECT date_sub(now(), interval 1 second);
-- datediff(날짜1, 날짜2) == 날짜1 - 날짜2 (기간)
SELECT datediff(curdate(), '2022-12-10');
-- 각자 살아온 일생 구하기
SELECT datediff(curdate(), '1999-12-11') + 1 재아일생;
-- emp 테이블에서 MANAGER 업무에 있어서 입사한 날로부터 오늘까지의 근무일수, 근무주수를 조회
SELECT ename, job, datediff(curdate(), hiredate) + 1 근무일수,
ceiling((datediff(curdate(), hiredate) + 1) / 7) 근무주수
FROM emp
WHERE job = 'MANAGER';
-- 사원들이 입사한 월만 검색
SELECT ename, month(hiredate) # substr(hiredate, 6, 2)
FROM emp;