개발지식/DB
DATE, DATETIME, TIMESTAMP 차이점
kimty1121
2023. 11. 14. 01:11
면접에서 질문을 받았지만 좋은 답변을 하지 못했다.
MySQL 기준으로 된 글을 참조하여 정리한다.
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바이트의 저장 공간을 사용한다.