1. 날짜/시간
-- 1. 날짜/시간
select now();
select ename, hiredate, now()
from emp;
-- 문자열
select '2025-02-25';
-- 문자열을 date 타입으로 바꾸기
select date('2025-02-25 12:30:35');
-- 시간
select time('2025-02-25 12:30:35');
-- 연도
select year('2025-02-25 12:30:35');
-- 월
select month('2025-02-25 12:30:35');
-- 일
select day('2025-02-25 12:30:35');
-- 시간
select hour('2025-02-25 12:30:35');
-- 분
select minute('2025-02-25 12:30:35');
-- 초
select second('2025-02-25 12:30:35');
2. 날짜 포맷 (대소문자 주의)
select date_format(now(), '%Y/%m/%d');
✅ 주요 날짜/시간 포맷 키:
키 | 의미 | 예시 (2024-02-25 14:30:45) |
%Y | 4자리 연도 | 2024 |
%y | 2자리 연도 | 24 |
%m | 2자리 월 (01~12) | 02 |
%c | 1 | 2 |
%d | 2자리 일 (01~31) | 25 |
%e | 1 | 25 |
%H | 24시간제 시간 (00~23) | 14 |
%h | 12시간제 시간 (01~12) | 02 |
%I | 12시간제 시간 (01~12) | 02 |
%l | 1 | 2 |
%i | 분 (00~59) | 30 |
%S | 초 (00~59) | 45 |
%s | 초 (00~59) | 45 |
%p | AM/PM | PM |
%f | 마이크로초 (6자리) | 123456 |
%W | 요일 (영어) | Sunday |
%a | 요일 (짧은 영어) | Sun |
%w | 요일 (0=일요일~6=토요일) | 0 |
%M | 월 (영어) | February |
%b | 월 (짧은 영어) | Feb |
%j | 연중 일차 (001~366) | 056 |
%U | 연중 주차 (00~53, 일요일 시작) | 08 |
%V | 연중 주차 (01~53, ISO 8601 표준) | 08 |
%X | ISO 8601 연도 | 2024 |
%x | 연도 (주차 기준, 4자리) | 2024 |
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);
-- 뺴기
select date_sub('2025-02-25', interval 2 day);
-- 간격 (날짜의 차이)
select datediff('2025-02-25', '2025-03-01');
-- 현재 시간과 선택한 시간의 차이 (time = 시,분,초)
select timediff(now(), '2025-02-25 12:50:00');
-- 해당 월의 마지막 날짜
select last_day(now());
4. 수학함수
MySQL의 수학함수가 엄청나게 많은데 함수를 찾고 싶을 때는 챗 GPT에게 MySQL의 수학함수를 알려달라고 물어본다.
-- 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("abcde", "c"); -- c가 몇번 자리에 있는지 표시
select rpad('ssarmango', 10, '*'); -- 10까지 표시후 나머지는 *로 표시
select rpad(substr('ssarmango',1,4), LENGTH("ssarmango"), '*'); -- 오른쪽에 *
select lpad(substr('ssarmango',1,4), LENGTH("ssarmango"), '*'); -- 왼쪽에 *
6. 조건문
if 문법은 MySQL에만 있는 문법이고, case when은 모든 DB에 있는 문법이다.
다른 DB를 사용할 수 있고, 주로 Oracle을 많이 사용하기에 case when 연습을 많이 해야한다.
-- 조건문 (if - mysql , csae when - 모든 DB)
select if(10>5, "참", "거짓");
-- 2500 (고액연봉), (일반연봉)
select ename, sal,
case
when sal > 2500 then "고액연봉"
when sal <2000 then "일반연봉"
else "중간연봉"
end "연봉그룹"
from emp;
Share article