TIL/DB

[TIL] DATE, DATETIME, TIMESTAMP 비교

Dream COM Ddulut 2024. 12. 6. 13:15

MySQL 테이블을 작성 중 '작성일', '수정일' 컬럼의 타입을 지정해야했는데,  찾아보니 날짜 형식을 지정하는 3가지 방법이 있었다. 각각 어떤 차이점이 있는지 정리해보려한다.


DATE

 

DATE는 '연-월-일' 만 저장하고 시간을 저장하지 않는다.

 

형식: 'YYYY-MM-DD'

범위: '1000-01-01''9999-12-31'

 

실행 예시:

CREATE TABLE time(
  date DATE,
);

INSERT INTO time (date) value (now()); //시스템 시간 저장

SELECT date FROM time;

 

 

 

DATETIME, TIMESTAMP

 

DATETIMETIMESTAMP는 '연-월-일'뿐만 아니라 '시간'도 함께 저장한다.

 

다만, TIMESTAMP는 UTC 시간이 저장되고 DB의 time_zone 시스템 변수의 영향을 받는다.

따라서 MySQL 서버의 시간대 설정에 따라 TIMESTAMP 값이 다르게 해석될 수 있다.

데이터가 여러 나라에서 사용되는 경우라면 TIMESTAMP를 사용하는 것이 좋을 수도 있겠다.

 

형식: 'YYYY-MM-DD hh:mm:ss'

범위: (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

 

(MySQL 8.0.28 버전에서 3001-01-18 23:59:59까지 날짜 표현이 가능하도록 개선 되었다고 함.

자세한 내용은 'Y2K38' 검색)

 

실행 예시:

CREATE TABLE time(
  dateTime DATETIME,
  timeStamp TIMESTAMP
);

INSERT INTO time (dateTime, timeStamp) value (now(), now()); //서버 시간 저장

 

 

 

 

 

 

 

참고자료:

https://dev.mysql.com/doc/refman/8.4/en/datetime.html

https://medium.com/finda-tech/mysql-timestamp-%EC%99%80-y2k38-problem-d43b8f119ce5

 

MySQL timestamp 와 Y2K38 Problem

안녕하세요. 핀다 DBA로 근무하고 있는 정현호 라고 합니다. 이번 글은 Unix TimeStamp와 MySQL의 날짜 컬럼에 관한 내용을 정리해보았습니다.

medium.com

 

MySQL :: MySQL 8.4 Reference Manual :: 13.2.2 The DATE, DATETIME, and TIMESTAMP Types

13.2.2 The DATE, DATETIME, and TIMESTAMP Types The DATE, DATETIME, and TIMESTAMP types are related. This section describes their characteristics, how they are similar, and how they differ. MySQL recognizes DATE, DATETIME, and TIMESTAMP values in several f

dev.mysql.com