이러한 데이터가 있다고 할때
이 데이터는 DATETIME 형식으로 있다고 가정할 때
날짜만 알고 싶을때, 요일정보가 필요할 때, 요일을 숫자로 표현하고 싶을 때
select name, day(birthdate)
from people;
select name, dayname(birthdate)
from people;
select name, dayofweek(birthdate)
from people;
각각 day()
dayname()
dayofweek()
으로 알 수 있으며 데이오브위크의 경우 일요일부터 1로 표시
월만 알고 싶을때, 월을 숫자가 아니라 문자로 보고싶을때, 년도만 확인하고 싶을때
select name, month(birthdate)
from people;
select name, monthname(birthdate)
from people;
select name, year(birthdate)
from people;
time형식으로 저장된 경우
시분초 또한 가능하며
datetime형식으로 저장된 경우
date형식, time형식의 함수 모두 가능하다
select name, hour(birthtime), minute(birthtime), second(birthtime)
from people;
select name, year( birthdt ), hour(birthdt)
from people;
사람이 보기 편하게는 어떻게 할까
1990-11-11 10:07:35 라고 적힌 컴퓨터의 형식을
1990년 11월 11일, 10시7분 입니다 같은 방법으로 볼 순 없을까
date_format( )
select name, date_format(birthdt, '%Y년 %m월 %d일, %H시 %i분 입니다.')
from people;
우선 date_format( )을 써준뒤
괄호 안에 첫번째 파라미터로 변환할 컬럼을 넣어주고
두번째 파라미터에 변환할 형식을 적어주게 된데
이때 %Y년은 XXXX년 형식으로 나오고 년을 쓰지않으면 XXXX만 나온다
%y년이라고 적으면 XX년만 나온다
뒤의 형식도 마찬가지
-- 현재 시간을 구하는 방법 now() 함수
select now();
-- 현재의 년월일만 가져오고 싶을때 curdate() 함수
select curdate();
-- 현재의 시분초만 가져오고 싶을때 curtime() 함수
select curtime();
-- 현재의 년월일 시분초 가져오고 싶을때 curent_timestamp() 함수
select current_timestamp();
now() 와 current_timestamp() 는 같다
시간의 차이를 구하는 방법 :datediff() 함수
현재시간과 birthdt시간의 차이를 구해보자 현재시간 - 태어난 시간
select datediff( now() , birthdt )
from people;
태어난 시간으로부터 100일 후의 날짜는?
select birthdt, date_add( birthdt , interval 100 day)
from people;
태어난 시간으로부터 100일 전의 날짜는?
select birthdt, date_sub(birthdt , interval 100 day)
from people;
1 - datediff( )를 통해 첫번째 파라미터의 시간과 두번째 파라미터의 시간 간의 시간을 계산한다
2 - date_add( )를 통해 첫번째 파라미터에 두번째 파라미터의 시간을 더한다
3 - date_sub( )를 통해 첫번째 파라미터에 두번째 파라미터의 시간을 뺀다
이때 중요한것은 interval과 날짜를 구하고싶다면 day 시간이라면 hour등 다양하게 가능하다
사실 date_add와 date_sub는 중요하지않다
인터벌과 시간을 정확히 표기해주면 된다
select birthdt, birthdt + interval 72 hour
from people;
select birthdt, birthdt + interval 2 year + interval 72 hour - interval 7 minute
from people;
'MYSQL' 카테고리의 다른 글
MYSQL - 이중테이블, foreign key, join( ) -left,right, cascade (0) | 2024.05.16 |
---|---|
MYSQL - createdAt now( ) 작성시간, updateAt on update now( )수정시간 (0) | 2024.05.16 |
MYSQL - CASE문 작성법, if( ) 사용법 (1) | 2024.05.14 |
MYSQL - null 확인법 is null( ), null 처리법 ifnull( ) (0) | 2024.05.14 |
MYSQL - ㅁㅁ별로 묶어서 Group by, having 작성법, 서브 쿼리 Sub Query (0) | 2024.05.14 |