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;