[MySQL]날짜 데이터타입에서 Timestamp를 쓰는 경우

DB를 설계하면서 등록일자, 삭제날짜등의 날짜 데이터타입을 지정해야했다.
날짜 데이터타입으로는 크게 Date, Datetime, Time, Timestamp 4가지가 있다.

Date vs Time

Date Time
설명 날짜만 출력 시간만 출력
예시 YYYY-MM-DD HH:MM:SS
범위 from 1000-01-01 to 9999-12-31 from -838:59:59 to 838:59:59

내가 필요한 데이터타입은 날짜뿐만 아니라 시간도 함께 필요하기때문에 Datetime, Timestamp 둘 중에서 무엇을 써야 좋을 지 고민했다.




Datetime vs Timestamp

이 둘의 가장 큰 차이점은 time zone의 영향을 받는지 안 받는지이다.
Timestamp는 서버 타임존에 영향을 받기 때문에 시스템 타임존이 변경되면 저장된 데이터도 변경된다.

DATETIME TIMESTAMP
설명 날짜와 시간 둘다 출력 날짜와 시간 둘다 출력
예시 YYYY-MM-DD HH:MM:SS YYYY-MM-DD HH:MM:SS
범위 from 1000-01-01 00:00:00
to 9999-12-31 23:59:59
from 1970-01-01 00:00:01 UTC
to 2038-01-19 03:14:07 UTC
현재시간 호출 now() default로 current_timestamp를 사용하여 자동 입력
데이터 타입 문자형 숫자형
용량단위 8byte 4byte




🤔 그럼 항상 Datetime만 사용하면 되는거 아닐까?

정답은 NO이다.
글로벌 서비스를 하면 DB 서버가 해당 지역 타임존을 따를 수 있다.
따라서 적절하게 선택하여 사용해야한다.