[MySQL || MariaDB] TIMESTAMP와 DATETIME 차이점 총 정리
DATETIME
index : 불가능
time zone : 영향 없음
타입 : 문자형
용량 : 8 byte
지원 범위 : 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
ON UPDATE 구문 : 사용 가능 (사용 불가로 알고 있었는데 테스트해보니 잘 되네요.)
TIMESTAMP
index : 가능
time zone : 영향 있음
타입 : 숫자형
용량 : 4 byte
지원 범위 : 1970-01-01 00:00:00 ~ 2038-01-19 03:14:07
ON UPDATE 구문 : 사용 가능
※ 주의 : 마이크로 초까지 얻으려면 timestamp( 1~6의 값 )을 설정 해줘야 합니다.
설정하지 않을 경우 기본값 0
DATETIME과 TIMESTAMP의 차이점
DATETIME은 입력된 날짜와 시간 그대로 데이터를 저장하지만
TIMESTAMP는 time_zone 시스템 변수로 값을 지정한다.
TIMESTAMP는 데이터 입출력시 time_zone 시스템 변수 값을 체크해 그 기반으로 변환하여 처리한다.
한마디로 가장 큰 차이점은 DATETIME은 일정하며 TIMESTAMP는 time_zone 설정의 영향을 받습니다.
아주 대표적인 예로 보자면
mysql> show variables like '%time_zone%';
+------------------+---------------------+
| Variable_name | Value |
+------------------+---------------------+
| system_time_zone | India Standard Time |
| time_zone | Asia/Calcutta |
+------------------+---------------------+
mysql> create table datedemo(
-> mydatetime datetime,
-> mytimestamp timestamp
-> );
mysql> insert into datedemo values ((now()),(now()));
mysql> select * from datedemo;
+---------------------+---------------------+
| mydatetime | mytimestamp |
+---------------------+---------------------+
| 2011-08-21 14:11:09 | 2011-08-21 14:11:09 |
+---------------------+---------------------+
mysql> set time_zone="america/new_york";
mysql> select * from datedemo;
+---------------------+---------------------+
| mydatetime | mytimestamp |
+---------------------+---------------------+
| 2011-08-21 14:11:09 | 2011-08-21 04:41:09 |
+---------------------+---------------------+
출처 : tech-recipes
결론은 TIMESTAMP는 time_zone 시스템 변수에 따른 값 변화가 크다는 것이다.
그럼 변수가 많으니 무조건 DATETIME을 써야 할까요? 그렇지 않습니다.
해외에 나가는 사이트라면 TIMESTAMP와 DATETIME을 적절히 잘 사용하여야 합니다.
더욱 자세한 걸 원하시는 분은
TIMESTAMP
https://mariadb.com/kb/en/timestamp/
DATETIME
https://mariadb.com/kb/en/datetime/
'MariaDB' 카테고리의 다른 글
[MySQL || MariaDB] System,SQL ERROR 모음 원인 및 해결 총 정리 (0) | 2020.04.24 |
---|---|
[MySQL || MariaDB] ALTER TABLE 문법 총 정리 (0) | 2020.03.22 |
[MySQL || MariaDB] 숫자형 문자 정렬 문제 및 해결(Feat.varchar) (0) | 2020.03.15 |
[MySQL || MariaDB] 여러 테이블 한번에 카운터 하기 (0) | 2020.03.15 |
[MySQL || MariaDB] ORDER BY 특정 값 우선 정렬(feat.FIELD) (2) | 2020.02.29 |