뭉지(moonz)
작은 발자국들의 위대한 여정
뭉지(moonz)
  • All (202)
    • Test Code (4)
    • 백엔드 개발하며 작성한 (27)
      • Spring (17)
      • 데이터베이스 (7)
      • 기억할 내용 (3)
    • 언어 (53)
      • Java (25)
      • node.js (7)
      • Python (21)
    • 클라우드 (6)
    • Algorithm & Data Structure (51)
      • 개념 (15)
      • 문제 풀이 (36)
    • 유용한 모든 것 (16)
    • monologue (7)
      • 업무 노트 (1)
      • 관리 로그 (0)
      • 내 이야기 공책 (6)
    • Project (2)
    • TroubleShooting (8)
    • 지식 (18)
      • Machine Learning (6)
      • Review (7)
      • Web (5)
    • Computer Science (5)

블로그 메뉴

  • 홈
  • 태그

인기 글

최근 글

최근 댓글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
뭉지(moonz)

작은 발자국들의 위대한 여정

[MySQL]날짜/시간 타입과 TIMESTAMP 칼럼 생성
백엔드 개발하며 작성한/데이터베이스

[MySQL]날짜/시간 타입과 TIMESTAMP 칼럼 생성

2021. 10. 8. 11:11
반응형

MySQL의 날짜/시간 타입

MySQL의 날짜/시간타입으로는 DATE, DATETIME, TIME, TIMESTAMP가 있다.

 

DATE 타입은

  • 날짜만 포함하는 타입
  • YYYY-mm-dd 형식으로 입력 가능
  • 1000-01-01부터 9999-12-31까지만 입력 가능

 

DATETIME 타입은

  • 날짜와 시간을 모두 포함하는 타입
  • YYYY-mm-dd HH:MM:SS 형식 입력 가능
  • 1000-01-01 00:00:00부터 9999-12-31 23:59:59까지 입력가능

 

TIME 타입은

  • 시간만 포함하는 타입
  • HH:MM:SS 형식으로 입력 가능
  • -838:59:59부터 838:59:59까지 가질 수 있음

 

TIMESTAMP 타입은

  • 날짜와 시간을 모두 포함하는 타입
  • YYYY-mm-dd HH:MM:SS 형식 입력 가능
  • 1970-01-01 00:00:01 부터 2038-01-19 03:14:07 UTC 까지 표현 가능
  • TIMESTAMP는 타임존에 영향을 받기 때문에 time_zone 시스템 변수에 입력된 시간대 정보를 기반으로 데이터를 입력받아 그 정보를 UTC로 변환하여 저장

 

 

DATETIME과 TIMESTAMP 차이

  타입 저장 공간 자동 입력 타임존 영향    
DATETIME 문자형 8byte X X    
TIMESTAMP 숫자형 4byte O O (UTC로 변환됨)    

 

본인은 Spring Boot와 연동하고자 하여 TIMESTAMP로 하려고 한다. 

 

TIMESTAMP 활용

1. updatedAt 칼럼 추가

ALTER TABLE {테이블명} add COLUMN {칼럼명} TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

# 예시)
ALTER TABLE users add COLUMN updatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
  • NOT NULL 대신 DEFAULT
  • NOW() 대신 CURRENT_TIMESTAMP
  • ON UPDATE : 수정 시에도 시간이 자동 수정되도록 함

 

2. 데이터 추가/수정 시 타임 확인

2021-10-08-10:27 에 데이터를 수정했다. 저장된 시간은 01:27 이다.

 

왜?

TIMESTAMP는 타임존에 영향을 받기 때문에 time_zone 시스템 변수에 입력된 시간대 정보를 기반으로 데이터를 입력받아 그 정보를 UTC로 변환하여 저장한다.

 

3. 타임존 확인

아래와 같이 현재는 한국 타임존이 적용되지 않았기 때문에, 한국 시간 10:27 보다 -9 인 01:27 UTC 시간으로 저장된 것이다. 

(KCT는 UCT + 9시간)

SELECT @@global.time_zone, @@session.time_zone,@@system_time_zone;

 

4. 타임존 변경

여러 글들을 보니 복잡해보였는데 나는 의외로 간단하게 변경할 수 있었다.

 

보통 아래 두 명령을 실행해야하는데, 신기하게도.. 본인은 첫번째 명령어만 실행해서 되었다. 

(본인은 두번째 명령어를 실행했더니 아래 오류가 떴다.

Error Code: 1227. Access denied; you need (at least one of) the SUPER or SYSTEM_VARIABLES_ADMIN privilege(s) for this operation)

SET time_zone='Asia/Seoul';
SET GLOBAL time_zone='Asia/Seoul';

다시 select문 실행한 모습

 

 

만약 실행되지 않으면 아래 글들을 참고하길 바란다.

  • https://jwkim96.tistory.com/23
  • https://stackoverflow.com/questions/44015692/access-denied-you-need-at-least-one-of-the-super-privileges-for-this-operat

 

 

5. 변경된 타임존 확인 (데이터 업데이트)

현재 시간(11:02)과 똑같이 바뀌었다.

 

 

 

 

참고 글

https://velog.io/@kho5420/MySQL-Datetime%EA%B3%BC-Timestamp%EC%9D%98-%EC%B0%A8%EC%9D%B4

https://velog.io/@taelee/mysql%EC%97%90%EC%84%9C-9%EC%8B%9C%EA%B0%84-%EC%B0%A8%EC%9D%B4%EB%82%A0%EB%95%8CGCP

 

 

반응형
저작자표시 (새창열림)

'백엔드 개발하며 작성한 > 데이터베이스' 카테고리의 다른 글

[ORM] 상속 관계 매핑  (0) 2022.05.20
[ORM] 연관관계의 주인을 정해야하는 이유  (0) 2022.05.20
[ORM > JPA] 영속성 컨텍스트  (0) 2022.04.14
[MySQL Workbench] ERD를 SQL 코드로 변환하기  (0) 2021.09.02
cmd로 MongoDB에 데이터 저장하기  (0) 2021.05.20
    '백엔드 개발하며 작성한/데이터베이스' 카테고리의 다른 글
    • [ORM] 연관관계의 주인을 정해야하는 이유
    • [ORM > JPA] 영속성 컨텍스트
    • [MySQL Workbench] ERD를 SQL 코드로 변환하기
    • cmd로 MongoDB에 데이터 저장하기
    뭉지(moonz)
    뭉지(moonz)
    제가 깨달은 것을 정리하는 공간입니다. 🧡

    티스토리툴바