[데이터베이스] 71. SELECT 단일행 함수

서회정's avatar
Feb 25, 2025
[데이터베이스] 71. SELECT 단일행 함수

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

clubnerdy