토이프로젝트에서 데이터의 생성날짜, 수정날짜 컬럼을 추가하던 중 시간 데이터 타입으로 어떤걸 쓸지 고민하다 간단히 정리
날짜와 시간을 표현하는 타입
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 |