MySQL에서 날짜 형식의 자료를 다루는 방식들. 

 

● people (table)

columns : id(int, PK, NN, UN, AI), name(varchar), birthdate(date), birthtime(time), birthdt(datetime)  

위와 같이 people 테이블을 작성하고, 날짜 데이터를 입력합니다.

테이블에서 데이터 타입을 괄호 안과 같이 설정해 줬기 때문에,

문자로 입력해도 자동으로 날짜 데이터형으로 인식됩니다. 

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

 

day() 

데이트 형식으로 바뀌었기 때문에 day()함수로 날짜 정보를 출력합니다. 

select name, day(birthdate)
from people;

 

dayname()

해당 날자의 요일 이름을 출력합니다. 

select name, dayname(birthdate)
from people;

 

dayofweek()

해당 날짜의 주수를 출력합니다. 

select name, dayofweek(birthdate)
from people;

 

dayofyear()

해당 날짜에서 그 해의 날짜 수를 표시합니다. 

select name, dayofyear(birthdate)
from people;

 

month()

해당 날짜의 월이 출력됩니다. 

select name, month(birthdate)
from people;

 

monthname()

해당 날짜의 월 이름이 출력됩니다. 

select name, monthname(birthdate), birthdate
from people;

 

hour(), minute(), second()

해당 날짜의 시, 분, 초도 출력 가능합니다. 

select name, birthtime, hour(birthtime), minute(birthtime), second(birthdt)
from people;

 

 

★ Formatting

-- db에 저장된 시간형식의 데이터를 사람이 보기 편한 데이터로 바꾸는 방법 
-- 년월일시 글로벌시간 클라이언트 쪽 웹앱 pc 로컬시간. .. 실제로 관리자 쪽 시간. 포맷팅 formating

select name, birthdt, date_format(birthdt, '%Y년 %m월 %d일, %h시 %i분 %s초')
from people;

FORMAT

%M Month 월 (Janeary, February ..)
%m Month 월 (01, 02, 03 ..)
%W Day of Week 요일 (Sunday, Monday ..)
%D Month 월 (1st, 2dn, 3rd ..)
%Y Year 연도 4자리 (2023)
%y Year 연도 2자리 (23)
%X Year 연도 (2023) 
%x Year 연도 (2023) 
%a Day of Week 요일 (Sun, Mon, Tue ..)
%d Day 일 (00, 01, 02 ..)
%e Day 일(0, 1, 2 ..)
%c Month(1, 2, 3 ..)
%b Month(Jen Feb ..)
%j n번째 일(100, 365)
%H Hour 시(00, 01, 24) 24시간 형태
%h Hour 시(01, 02, 12) 12시간 형태
%I (대문자 아이) Hour 시(01, 02 12) 12시간 형태
%l (소문자 엘) Hour 시(1, 2, 12) 12 시간 형태
%i Minute 분(00, 01 59)
%r hh:mm:ss AP
%T hh:mm:ss
%S, %s Second 초
%p AP, PM
%w Day Of Week (0, 1, 2) 0부터 일요일
%U Week 주 (시작: 일요일)
%u Week 주 (시작 월요일)
%V Week 주 (시작: 일요일)
%v Week 주 (시작:월요일)

 

now()

now() 함수는 서버에서의 현재 시각을 알려줍니다. 

select now();

 

curdate()

current date 현재 날짜를 알려줍니다. 

select curdate();

 

curtime()

select curtime();

 

datediff()

시간의 차이를 구하는 방법 date different. datediff() 함수 /왼쪽 - 오른쪽 . 결과는 날짜로 나옴. 
birthdate 컬럼의 시간과 현재 시간의 차이를 구해보자. 

select datediff( now(), birthdt ) 
from people;

 

date_add(), date_sub(), 

select birthdt, date_add( birthdt, interval 1 day )
from people;

select birthdt, date_add( birthdt, interval 5 month )
from people;

select birthdt, date_add( birthdt, interval 10 hour )
from people;

select birthdt, date_sub( birthdt, interval 5 year )
from people;

select birthdt, birthdt + interval 100 day
from people;

select birthdt, birthdt - interval 3 month
from people;

select birthdt, birthdt + interval 3 month + interval 10 day
from people;

 

● Comments (table)

columns : id(int, PK, NN, UN, AI), content(varchar(200)), createdAt(timestamp)

 

timestamp에 들어가는 시간은 글로벌타임으로 통일해서 사용하며, 한 곳(해당 서버)에서 생성하고 저장해야 한다.

(로컬타임 레코드 보내면 안돼...)

insert into comments 
( content, createdAt)
values
( '좋아요', now() );

insert into comments 
( content, createdAt)
values
( '저는 싫어요', now() );

 

Default/Expression에 now()를 입력해주면, 자동으로 default값이 CURRENT_TIMESTAMP()로 설정된다. 

위와 같이 default 설정해서 createdAt을 생략해도 현재 시간이 자동 입력된다. 

insert into comments 
( content )
values
( '저도 싫어요' );

 

id를 사용하여 선택 수정 가능함

update comments
set content = '좋아졌어요'
where id = 4;

 

댓글 추가, 

insert into comments 
( content )
values
( '새로운 댓글입니다');

댓글 수정.

update comments
set content = '수정한 댓글입니다.'
where id = 5;

 

프라이머리 키는 유니크하다. 데이터를 빠르게 가져오기 위한 것.  

+ Recent posts