업무단에서 너무나도 당연스럽게 날짜 타입을 사용할 때는 Timestamp을 사용해 왔다.
늦은감이 있지만 왜 일까? 무슨 차이가 있길래 Timestamp를 써야하는가 싶어 정리해보았다.
날짜형 데이터 타입
(mariaDB 기준)
1) TIME
시간
을 표시하는 데이터 타입. HH:MM:SS(또는 HHH:MM:SS)
형의 출력을 나타낸다.
TIME은 현재 시간 뿐만 아니라 과거 시간이나, 특정 이벤트끼리의 간극을 표현하는데 사용되기도 한다.
2) DATE
날짜를 표시하는 데이터타입. 시간을 포함하지 않는다.
YYYY-MM-DD
형으로 입출력하며, '1001-01-01' 부터 '9999-12-31'까지 입력이 가능하다.
3) DATETIME
날짜와 시간을 포함하는 데이터 타입.
YYYY-MM-DD HH:MM:SS
의 형태로 사용되며, '1001-01-01 00:00:00'부터 '9999-12-31 23:59:59'까지 입력.
4) TIMESTAMP
날짜와 시간을 포함하는 데이터 타입.
YYYY-MM-DD HH:MM:SS(.FFFFFF)
의 형태 사용, Date보다 정밀한 시간을 요구할 때 사용한다.
시스템의 프로세스 시간, 우선순위를 정하거나 ms(밀리세컨드) 이하까지 표현하기 위해 사용한다.
Q. TIMESTAMP와 DATETIME의 차이는?
A.
TIMESTAMP | DATETIME | |
---|---|---|
타입 | 숫자형 | 문자형 |
용량 | 4byte | 8byte |
입력 | Default Insert (AUTO) | 명시적 INSERT |
형식 | 1970~01-01 ~ 2038-01-19 (UTC) | 1000-00-00 ~ 9999-99-99 |
두 가지 타입의 가장 큰 차이는 형식을 보면 알 수 있다.
TIMESTAMP의 형식은 UTC
형으로 TIME_ZONE
을 가지고 있다.
만일 DATETIME과 TIMESTAMP에서 동일하게 now()
를 받는다면
mysql 또는 mariaDB 에 설정되어있는 TIME_ZONE
에 따라 입력값이 다르게 나타날 수 있다.
'Database' 카테고리의 다른 글
[PostgresQL] 드디어 나온 PostgresQL 15의 Merge into 구문 사용하기 (0) | 2024.08.19 |
---|---|
[Database] Stored Procedure란? 개념과 장담점 알아보기 (0) | 2024.04.04 |
[PostgresQL] 중복데이터 제거하고 하나만 남기기 (1) | 2021.11.28 |
[PostgreSQL] Returning 문법으로 Row 정보 리턴 받기 (0) | 2021.11.23 |
[PotsgresQL] 이 없으면 잇몸으로! MERGE 대신 UPSERT 사용하기 (0) | 2021.11.23 |