[SQL] DATETIME 과 TIMESTAMP 차이점

Dreamer·2024년 4월 29일
post-thumbnail

https://nesoy.github.io/articles/2020-02/mysql-datetime-timestamp

DATETIME : 입력된 날짜와 시간 그대로 데이터를 저장하지만
TIMESTAMP : time_zone 시스템 변수로 값을 지정한다.

TIMESTAMP는 데이터 입출력시 time_zone 시스템 변수 값을 체크해 그 기반으로 변환하여 처리한다.

한마디로 가장 큰 차이점은 DATETIME은 일정하며 TIMESTAMP는 time_zone 설정의 영향을 받습니다.


DATETIME과 TIMESTAMP는 모두 날짜와 시간을 저장하는 데 사용되는 MySQL의 데이터 타입입니다. 그러나 이 둘 사이에는 몇 가지 중요한 차이점이 있습니다.

  1. 저장 형식

    • DATETIME: 날짜와 시간을 'YYYY-MM-DD HH:MM:SS' 형식으로 저장합니다.
    • TIMESTAMP: 날짜와 시간을 Unix 타임스탬프 형식으로 저장합니다. (1970년 1월 1일 이후의 초 단위 시간)
  2. 저장 범위

    • DATETIME: '1000-01-01 00:00:00'부터 '9999-12-31 23:59:59'까지의 값을 저장할 수 있습니다.
    • TIMESTAMP: '1970-01-01 00:00:01' UTC부터 '2038-01-19 03:14:07' UTC까지의 값을 저장할 수 있습니다.
  3. 시간대 처리

    • DATETIME: 시간대 정보를 저장하지 않습니다. 애플리케이션에서 시간대를 처리해야 합니다.
    • TIMESTAMP: 시간대 정보를 포함하여 저장합니다. MySQL 서버의 시간대를 사용하여 저장하고 검색 시 클라이언트의 시간대로 변환합니다.
  4. 기본값

    • DATETIME: 기본값이 NULL입니다.
    • TIMESTAMP: 첫 번째 TIMESTAMP 컬럼의 기본값은 CURRENT_TIMESTAMP입니다.
  5. 스토리지 크기

    • DATETIME: 8 바이트의 고정 크기로 저장됩니다.
    • TIMESTAMP: 4 바이트의 고정 크기로 저장됩니다.

일반적으로, 애플리케이션에서 시간대를 직접 처리하거나 더 넓은 범위의 날짜를 다뤄야 하는 경우에는 DATETIME을 사용하고, 시간대를 자동으로 처리하고 싶거나 스토리지 공간을 절약하고 싶은 경우에는 TIMESTAMP를 사용합니다.

프로젝트의 요구사항과 데이터의 특성에 따라 적절한 타입을 선택하면 됩니다. 대부분의 경우 DATETIME으로 충분하지만, 시간대 처리나 스토리지 최적화가 중요한 경우에는 TIMESTAMP를 고려해볼 수 있습니다.

TIMESTAMP⬇️
https://mariadb.com/kb/en/timestamp/

DATETIME⬇️
https://mariadb.com/kb/en/datetime/

profile
Moving forward based on records

0개의 댓글