개발학습일지

[MySQL] SQL 날짜와 시간 처리하는 함수들 _ dayofweek(), now(), curdate(), date_add(), date_sub() 본문

MySQL

[MySQL] SQL 날짜와 시간 처리하는 함수들 _ dayofweek(), now(), curdate(), date_add(), date_sub()

처카푸 2024. 5. 16. 10:58

날짜와 시간 처리하기

 

DB에서 년, 월, 일  다루기 _birthdate = DATE

- day(), month(), year(), dayname(), dayofweek() 

-- 날짜만 가져올때
select name, day( birthdate )
from people;
-- 월만 가져올때
select name, month( birthdate )
from people;
-- 년도만 가져올때
select name, year( birthdate )
from people;
-- 요일을 문자열로 가져올때
select name, dayname( birthdate )
from people;
-- 요일을 숫자로 가져올때 _글로벌하게 사용하기 위해서 숫자로 사용한다.
-- 각 국가의 언어로 클라이언트 개발자가 숫자에서 글로 바뀌게 만든다.
select name, dayofweek( birthdate )
from people;

 

 

DB에서 시간 다루기 _ birthtime = TIME, birthdt = DATETIME

- hour(), minute(), second()

- DATETIME으로 저장된 데이터라면 년, 월, 일, 시, 분, 초 원하는 데이터 모두 다룰 수 있다.

-- 시간도 각각 처리하는 함수가 있다.
select name, hour( birthtime ), minute( birthtime ), second( birthtime )
from people;

-- birthdt 는 datetime 이라서 다 사용 가능하다
select name, year( birthdt ), hour( birthdt )
from people;

 

 

DB에 저장된 시간데이터 문자열로 바꾸는 방법

- 1990-11-11 10:07:35 => 1990년 11월 11일, 10시 7분입니다.

- 실제 실무에서는 많이 사용하지 않는 방법.

  이유 : 글로벌 서비스를 해야 하기 때문에 로컬 타임이 아닌 UTC 글로벌 표준시간으로 저장한다.

select name, date_format( birthdt , '%Y년 %m월 %d일, %H시 %i분 입니다.' )
from people;

 

 

현재시간 구하는 방법

- now(), curdate(), curtime()

select now();
-- 현재의 년월일만 가져오고 싶을때 curdate() 함수
select curdate();
-- 현재의 시분초만 가져오고 싶을때 curtime() 함수
select curtime();

 

 

시간의 차이를 구하는 방법

- datediff( 큰 시간, 작은 시간 ), date_add( 기준일, 계산할 시간 ), date_sub( 기준일, 계산할 시간 )

select datediff( now() , birthdt )
from people;
-- 태어난 시간으로부터 100일 후의 날짜는?
select birthdt, date_add( birthdt , interval 100 day )
from people;
-- 태어난 시간으로부터 100일 전의 날짜는? date_sub( 기준일 , 계산할 날짜 )
select birthdt, date_sub( birthdt , interval 100 day )
from people;
-- 태어난 시간으로부터 5주 후의 날짜는?
select birthdt, date_add( birthdt , interval 5 week )
from people;
-- 태어난 시간으로부터 72시간 후의 날짜는?alter
select birthdt, date_add( birthdt , interval 72 hour )
from people;

- 위에 방법도 있지만 실무에서 잘 사용하는 다른 방법도 있다.

select birthdt, birthdt + interval 72 hour
from people;

select birthdt, birthdt - interval 72 hour
from people;

select birthdt, birthdt + interval 2 year + interval 27 hour - interval 29 minute
from people;

 

 

MySQL - Date and Time Functions

날짜 시간 관련, MySQL 함수들 참고할 수 있는 사이트

https://www.tutorialspoint.com/mysql/mysql-date-time-functions.htm