MySQL

MySQL) 데이터베이스 DATE(날짜) 가공하는 함수

567Rabbit 2024. 5. 16. 10:13

데이터 입력하기

 

CREATE TABLE people (name VARCHAR(100), birthdate DATE, birthtime TIME, birthdt DATETIME);

insert into people
(name, birthdate, birthtime, birthdt)
values
( 'Mike', '1990-11-11', '10:07:35', '1990-11-11 10:07:35'),
( 'Larry', '1980-12-25', '04:10:42', '1980-12-25 04:10:42');

 

 

-- 년 월 일에서 날짜만 가져올 때
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;

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

-- DATETIME은 년 월 일 시 분 초 다 된다
select name, year(birthdt), hour(birthdt)
from people;

 

date_format

 

# 많이 사용하지는 않는다 글로벌 회사에서는 효율적으로 사용할 수 없기 때문이다.

-- db에 저장된 시간형식의 데이터를, 사람이 보기 편한 문자열로 바꾸는 방법

 

 

 

 

-- 1990-11-11 10:07:35 => 1990년 11월 11일, 10시 7분 입니다
select name, date_format(birthdt, '%Y년 %m월 %d일, %H시 %i분 입니다') as datedt
from people;

 

 

 

 

 

#글로벌회사?

UTC(글로벌 표준시간)을 사용한다.

 

 

 

데이터베이스 글로벌 표준시간( UTC )

 

-- 현재시간을 구하는 방법 now() 함수
select now();

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

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

 

 

 

**********

실무에서의 방법

 

테이블을 만들 때 만든 열의 datatype을 timestamp로 하고 (괄호는 지운다)

default(디폴트)에 now() 또는 CURRENT_TIMESTAMP를 적는다.

 

update문을 쓸 때 업데이트 된 시간도 알고싶어서 updated 열을 따로 만들 때에는

테이블을 만들 때 만든 열의 datatype을 timestamp로 하고 (괄호는 지운다)

default(디폴트)에 now() on update now() 또는 CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP를 적는다.

 

**********

 

 

datediff() 함수

-- 시간의 차이를 구하는 방법
-- 현재 시간과 birthdt 시간의 차이를 구해보자

select datediff(now() , birthdt)

 

 

date_add() 함수

-- 태어난 시간으로부터 100일 후의 날짜는?
select birthdt, date_add( birthdt, interval 100 day )
from people;


-- 태어난 시간으로부터 5주 후의 날짜는?
select birthdt, date_add( birthdt, interval 5 week )
from people;


-- 태어난 시간으로부터 72시간 후의 날짜는?
select birthdt, date_add( birthdt, interval 72 hour )
from people;

 

 

date_sub() 함수

-- 태어난 시간으로부터 100일 전의 날짜는?
select birthdt, date_sub( birthdt, interval 100 day )
from people;

 

 

 

실무에서 많이 쓰는 방법

 

-- 태어난 시간으로부터 72시간 후의 날짜는?
select birthdt, birthdt + interval 72 hour 
from people;


-- 태어난 시간으로부터 72시간 전의 날짜는?
select birthdt, birthdt - interval 72 hour 
from people;


-- 여러 줄도 가능하다
select birthdt, birthdt + interval 2 year + interval 27 hour - interval 29 minute
from people;