[mysql] DATE, DATETIME, TIME, TIMESTAMP

yunny·2023년 4월 24일
0

MySQL

목록 보기
2/2

node.js / express / mysql 사용하여 작은 프로젝트 진행 중,
필요한 데이터에 날짜가 포함되어 있다.
지난 프로젝트 때, 날짜 관련한 데이터 타입을 잘못 짰다가 고생했기 때문에..
이번엔 데이터 타입을 알아보고 테이블을 짜보려고 한다

DATE

날짜 포함O
시간 포함X
YYYY-MM-DD
(1000-01-01 ~ 9999-12-31)

DATETIME - 문자형

날짜 포함O
시간 포함O
YYYY-MM-DD HH:MM:SS
(1000-01-01 00:00:00 ~ 9999-12-31 23:59:59)

TIME

HH:MM:SS 시간에 대한 정보 담음
(-838:59:59 ~ 838:59:59)

TIMESTAMP - 숫자형

날짜 포함O
시간 포함O
(1970-01-01 00:00:01 ~ 2038-01-19 03:14:07 UTC)

DATETIME vs. TIMESTAMP

  1. 타입
  • DATETIME : 문자형
  • TIMESTAMP : 숫자형
  1. 저장공간
  • DATETIME : 8byte
  • TIMESTAMP : 4byte
  1. 자동입력
  • DATETIME : 수정할 때마다 그때의 날짜 입력 필요
  • TIMESTAMP : 날짜 입력안해도 자동으로 입력 가능 (CURRENT_TIMESTAMP)
  1. 시간대 정보
  • DATETIME : timezone에 관계없이 처음 입력한 값 출력
  • TIMESTAMP : timezone에 관계 O, 입력된 시간대 정보를 기반으로 데이터를 받아 정보를 UTC로 변환하여 저장
  • ex) 한국의 17시 작성글 = 미국의 17시 작성글
    그렇기 때문에 timestamp 타입을 사용해서 날짜 표현 추천

어떤 걸 사용할까?

지난 프로젝트에서는 GET요청만 했던터라 날짜 비교하는 것이 쉽지 않았는데
다행히 이번 프로젝트에서는 POST 요청이 있어서 조금 나을 것 같다..
(정확히 말하면 GET, POST 전부 필요하긴하다)
여튼 timestamp를 이용해야할 것 같다
그 이유는 아래와 같다

숫자형을 사용하는 것이 편리
데이터 크기
시간대의 정보 반영

profile
기록하지 않으면 잊어버려요 !

0개의 댓글

관련 채용 정보