[Mysql] Datetime , Timestamp 자료형

대원·2023년 6월 27일

DB

목록 보기
1/4

배경

  • 프로젝트 진행시, 간단한 쿼리문을 작성하다가 ‘시간’과 관련된 자료형을 넣을 일이 있었다.
  • ‘시간’과 관련된 자료형을 넣을 때 mysql에서는 datetime, timestamp 2 종류가 있는 것으로 알게되었는데 둘의 차이는 무엇이며 어떨 때 어떤 자료형을 써줘야할지 문득 궁금해졌다.

datetime VS timestamp 무엇이 다른가?

  • timestamp
    • TIME_ZONE에 의존..
  • 특별한 설정없이 datetime, timestamp를 자료형으로 시간을 넣어도 동일하게 보이지만,
    아래와 같이 특별한 time_zone을 설정할 경우, timestamp 자료형의 값이 변경되는 것을 확인가능

SET TIME_ZONE = ‘america/new_york’;

  • 자료형을 datetime, timestamp로 각기 달리 설정하여 테이블을 생성하고 now()라는함수를 통해
    현재 시간을 삽입해줬다.

  • 쿼리문 조회 시 내용은 아래와 같다. 보다싶이 datetime자료형과 Timestamp 자료형의 결과는 동일하다.
  • TIME_ZONE 변경하는 쿼리를 실행해줬다. .

  • timestamp 자료형의 데이터 값이 변경됨을 확인가능하다.

  • 이와 같은 자료형의 차이의 경우, 지금 수준의 프로젝트에선 의미가 없을 수 있지만 서비스 단위의 범위가 전 세계를 대상으로 하는경우(가령, 페이스북, 구글 등..) 이와 같은 자료형을 무엇으로 설정하느냐에 따라 또 Time_zone이 어떻게 설정되었느냐에 따라 데이터의 생성 시간 등이 달라지게 될 수 있으므로 어찌보면 매우 중요한 값이라고 할 수 있겠다.
  • 또한 통상, 이런 경우 Datetime 보다는 UTF(표준시)를 통해 계산이 가능한 Timestamp 등을 많이 사용한다고 한다.
  • 아래와 같이 설정 가능함.
  • 한국의 표준시는 UTC보다 9시간 빠르므로 아래와 같이 설정 가능!
💡 SET (변수명) time_zone = ‘+9:00’; SET time_zone = ‘+9:00’;
profile
고민하고 공부하는 사람

0개의 댓글