본문 바로가기

CS/DB

MySQL) 타입 DateTime 과 Timestamp 중 어떤걸 쓸까

토이프로젝트에서 데이터의 생성날짜, 수정날짜 컬럼을 추가하던 중 시간 데이터 타입으로 어떤걸 쓸지 고민하다 간단히 정리

 

날짜와 시간을 표현하는 타입

MySQL에서는 날짜와 시간을 표현하는 데 여러 가지 타입을 제공

  • DATE: YYYY-MM-DD 형식으로 날짜만 표현, datetime에서 date만 뽑아낸 것
    (Extract the date part of a date or datetime expression)
  • DATETIME: YYYY-MM-DD HH:MM:SS 형식으로 날짜와 시간을 표현
  • TIMESTAMP: YYYY-MM-DD HH:MM:SS 형식으로 날짜와 시간을 표현하며, 자동으로 값이 업데이트
  • TIME: HH:MM:SS 형식으로 시간만 표현
  • YEAR: YYYY 형식으로 년도만 표현

 

날짜와 시간에 관한 다양한 함수 또한 제공

  • 예를 들어, DATE_ADD(), DATE_SUB(), NOW(), CURDATE() 등의 함수를 사용 가능
  • now()함수의 자료형은 DateTime ('Return the current date and time')

여기까지만 보면 DATETIME, TIMESTAMP를 사용하려한다. 이용자가 거의 없기 때문에 초단위로 기록하면 충분!

 

DATETIME 과 TIMESTAMP 선택

  • DATETIME과 TIMESTAMP는 모두 초 단위까지 표현이 가능하다. TIMESTAMP는 마이크로세컨드까지 표현이 가능!
  • 하지만 TIMESTAMP는 서버 타임존에 영향을 받기 때문에, 시스템 타임존이 변경되면 저장된 데이터도 변경

 

결론은 타입을 사용할 토이프로젝트는 한국에서만 사용할꺼고, 디버깅을 염두해두기 때문에 DATETIME을 사용할꺼다 

 

 

 

참고

https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format 

https://dev.mysql.com/doc/refman/8.0/en/datetime.html

 

 

'CS > DB' 카테고리의 다른 글

InnoDB의 Buffer Pool, MVCC  (0) 2024.11.18
MySQL auto_increment와 innodb_autoinc_lock_mode  (0) 2023.06.12
mysql INFORMATION_SCHEMA 업데이트 속도  (0) 2023.06.10
like 절 주의할 점  (0) 2022.07.22
맥 mysql 설치 및 실행  (0) 2022.07.22