개발바닥곰발바닥
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의 차이는 무엇일까?

둘 다 날짜와 시간을 함께 저장한다는 점에서는 같다. 그러나 자세히 알아보면 차이점을 찾아볼 수 있다.

  1. TIMESTAMP는 사용자의 별도 입력이 없으면 데이터가 마지막으로 입력되거나 변경된 시간이 저장되며 기본적으로 NOT NULL이다. DATETIME은 데이터 값을 입력해주어야만 날짜가 입력이 된다. (default 값을 설정해준 경우 제외)
  2. DATETIME은 시스템의 TIME_ZONE이 변경되어도 값이 변하지 않지만, TIMESTAMP는 시스템의 TIME_ZONE에 의존한다.
  3. DATETIME은 문자형으로 저장되고, TIMESTAMP는 숫자형으로 저장된다.(1970년 1월 1일 자정을 기준으로 몇 초가 지났는지를 저장)
  4. TIMESTAMP는 4바이트의 저장 공간을 사용하고 DATETIME은 8바이트의 저장 공간을 사용한다.

데이터베이스 설계 시 위의 차이점과 함께 각 타입의 특성을 고려하여 선택하면 좋을 것 같다.

728x90
profile

개발바닥곰발바닥

@bestinu

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!