티스토리 뷰

면접에서 질문을 받았지만 좋은 답변을 하지 못했다.

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바이트의 저장 공간을 사용한다.

 

참조 : https://bestinu.tistory.com/61