728x90
MySQL DATE, DATETIME, TIMESTAMP 차이점
Mysql에서 데이터 타입을 선택할 때, DATE와 DATETIME 간의 차이는 다들 알고 있지만 DATETIME과 TIMESTAMP 간의 차이점은 헷갈리는 경우가 많다. 그래서 오늘은 이 세 가지 타입에 대해 정리해보려고 한다.
DATE
DATE는 시간을 제외한 날짜를 저장하는 타입으로 기본 포맷은 ‘YYYY-MM-DD’이며, ‘1000-01-01’부터 ‘9999-12-31’까지 저장할 수 있다.
DATETIME
DATETIME은 날짜와 시간을 함께 저장할 수 있는 타입으로, 기본 포맷은 ‘YYYY-MM-DD HH:mm:ss’이며, ‘1000-01-01 00:00:00’ 부터 ‘9999-12-31 23:59:59’까지 저장할 수 있다.
TIMESTAMP
TIMESTAMP는 날짜와 시간을 타임스태프 형식으로 저장하는 타입으로, ‘1970-01-01 00:00:01’ UTC부터 ‘2038-01-19 03:14:07’ UTC까지의 범위를 저장할 수 있다.
입력한 데이터가 유효한 날짜와 시간이 아니면 세 타입 모두 0으로 저장된다.
DATETIME VS TIMESTAMP
그렇다면 본론으로 돌아가서 DATETIME과 TIMESTAMP의 차이는 무엇일까?
둘 다 날짜와 시간을 함께 저장한다는 점에서는 같다. 그러나 자세히 알아보면 차이점을 찾아볼 수 있다.
- TIMESTAMP는 사용자의 별도 입력이 없으면 데이터가 마지막으로 입력되거나 변경된 시간이 저장되며 기본적으로 NOT NULL이다. DATETIME은 데이터 값을 입력해주어야만 날짜가 입력이 된다. (default 값을 설정해준 경우 제외)
- DATETIME은 시스템의 TIME_ZONE이 변경되어도 값이 변하지 않지만, TIMESTAMP는 시스템의 TIME_ZONE에 의존한다.
- DATETIME은 문자형으로 저장되고, TIMESTAMP는 숫자형으로 저장된다.(1970년 1월 1일 자정을 기준으로 몇 초가 지났는지를 저장)
- TIMESTAMP는 4바이트의 저장 공간을 사용하고 DATETIME은 8바이트의 저장 공간을 사용한다.
데이터베이스 설계 시 위의 차이점과 함께 각 타입의 특성을 고려하여 선택하면 좋을 것 같다.
728x90
'데이터베이스' 카테고리의 다른 글
[MySQL] 프로시저 WHILE 사용해서 UPDATE 쿼리 날리기 (0) | 2022.11.13 |
---|---|
데이터베이스 명명 규칙 (Naming Conventions) (0) | 2022.06.29 |
[MySQL] Database 이름 변경하기 (0) | 2022.01.25 |
Mysql 예약어를 필드명, 컬럼명으로 사용시 해결방법 (0) | 2021.11.23 |
MySQL 외부/원격 접속 안될 때(공유기 사용자) (0) | 2021.05.17 |