1. 날짜 함수
-- SELECT 단일행 함수
-- 1. 날짜/시간
select now();
select ename, hiredate, now()
from emp;
-- 문자열
select '2025-02-25';
-- 날짜
select date('2025-02-25 10:38:55');
-- 시간
select time('2025-02-25 10:38:55');
-- 년도
select year('2025-02-25 10:38:55');
-- 월
select month('2025-02-25 10:38:55');
-- 일
select day('2025-02-25 10:38:55');
-- 시
select hour('2025-02-25 10:38:55');
-- 분
select minute('2025-02-25 10:38:55');
-- 초
select second('2025-02-25 10:38:55');2. 날짜 포맷
-- 2. 날짜 포맷
select date_format(now(),'%y/%m/%d - %h:%i:%s');3. 날짜 연산하기
-- 3. 날짜 연산하기 (더하기, 빼기, 간격, 마지막 날짜)
-- 더하기
select date_add(now(), interval 4 year);
select date_add(now(), interval 4 month);
select date_add(now(), interval 4 week);
select date_add(now(), interval 4 day);
select date_add(now(), interval 4 hour);
select date_add(now(), interval 4 minute);
select date_add(now(), interval 4 second);
-- 설정한 날의 4일 전
select date_sub('2025-02-25', interval 4 day);
-- 현재날짜와 특정날짜 빼기
select datediff('2025-02-25', '2025-03-01');
-- 현재시간과 특정시간 시간 빼기
select timediff(now(), '2025-02-26 12:50:00');
-- 이달의 마지막 날짜
select last_day(now());4. 수학 함수
-- 4. 수학함수
select floor(101.5);
select ceil(101.5);
select round(101.5);
select mod(101,10);5. 문자열 함수
-- 5. 문자열 함수
-- substr(시작번지, 개수) (시작번지는 1부터)
select substr(hiredate, 1, 4)
from emp;
select year(hiredate)
from emp;
-- 인수 변경하기 / -> -
select replace("010/2222/7777","/","-");
select instr("abcd","c");--
select rpad("clubnerdy",3,'*');
select rpad(substr("clubnerdy",3,'*'), length("clubnerdy"),'*');
select lpad(substr("clubnerdy",3,'*'), length("clubnerdy"),'*');6. 문제 물어보기
전화번호 가운데 숫자를 *로 마스킹 해보자
한 번에 하기 어려우니 샘플링을 통해 결과값을 천천히 도출해보자
-- 6. 문제풀기
select name, replace(
tel,
substr(tel, instr(tel,")")+1, instr(tel,"-")-instr(tel,")")-1),
repeat('*',length(substr(tel, instr(tel,")")+1, instr(tel,"-")-instr(tel,")")-1)))
)
from student;
select name, tel, length(substr(tel, instr(tel,")")+1, instr(tel,"-")-instr(tel,")")-1))
from student;
select instr('031)222-561',')'); -- 4(4+1)
select instr('031)222-561','-'); -- 8(8-4-1)
select substr('031)222-561',4, 4);
select instr('031)222-561','-');
select instr('031)222-561',4,4); 7. 조건문
-- 조건문 (if - mysql, case when - 모든 DB)
select if(10>5,"참","거짓");
select if(10>5,if(5>2,"1","2"),"거짓");
-- 2500 (고액연봉), (일반연봉)
select ename, sal,
case
when sal>2500 then "고액연봉"
when sal<2500 then "일반연봉"
else "평균연봉"
end "연봉그룹"
from emp;Share article