MySQL을 사용하며 날짜와 시간 정보를 저장하는 데에 사용되는 Timestamp와 DateTime의 대하여 알아보겠습니다.
Timestamp
- 특정 이벤트가 발생한 시간을 정확하게 기록하기 위해 사용되는 데이터 유형
- 일반적으로 날짜와 시간 정보를 포함하여, 이를 통해 특정 이벤트가 언제 발생했는지를 정확하게 추적할 수 있습니다.
- 주로 데이터베이스에서 이벤트 로깅, 데이터 변경 이력 추적 등의 용도로 사용됩니다.
- Timestamp는 보통 시간대(time zone) 정보를 포함하며, 시간대 변환을 고려하여 데이터를 처리해야 합니다.
DateTime
- 날짜와 시간 정보를 나타내는 데이터 유형
- Timestamp와 마찬가지로 날짜와 시간을 저장할 수 있지만, 시간대 정보를 포함하지 않는 경우가 일반적입니다.
- 주로 정확한 날짜와 시간 정보가 필요한 경우 사용됩니다. 예를 들어, 회의 일정, 생일 등을 저장할 때 사용될 수 있습니다.
- 일반적으로 로컬 시간대를 가정하고 데이터를 저장하므로, 시간대 변환에 대한 고려가 필요하지 않습니다.
Timestamp와 DateTime 비교
데이터가 어떻게 다른지 직접 확인해 보기 위해 테이블을 생성해 보겠습니다.

현재 시점으로 데이터를 추가해 보겠습니다.

둘 다 데이터가 동일한 것을 확인할 수 있습니다.

Time_Zone을 변경하여 현재 시점으로 데이터를 추가해 보겠습니다.


변경된 timezone을 기준으로 timestamp이 변경되어 입력되는 것을 확인할 수 있습니다.
TimeStamp는 time_zone에 의존하고 있는 것을 확인할 수 있었습니다.
Timestamp와 DateTime 공통점
- 둘 다 날짜와 시간을 저장할 수 있는 데이터 유형입니다.
- TIMESTAMP와 DATETIME 모두 "YYYY-MM-DD HH:MM:SS"의 형식으로 데이터 저장합니다.
Timestamp와 DateTime 차이점
| 범위 | 표준 시간대 | |
| Timestamp | 1970년 1월 1일 00:00:01 UTC에서 2038년 1월 19일 03:14:07 UTC까지의 범위 | 각 지역의 표준시간대 |
| DateTime | MySQL에 종속되어 있어서 "1000-01-01 00:00:00"부터 "9999-12-31 23:59:59"까지의 범위 | 어떤 시간대에도 동일 |
새로운 데이터 저장 시 자동 업데이트
Timestamp 컬럼을 새로운 데이터가 삽입될 때 자동으로 현재 시간으로 설정될 수 있습니다.
CREATE TABLE example_table (
id INT AUTO_INCREMENT PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
...
);
위처럼 컬럼을 정의할 때 'DEFAULT CURRENT_TIMESTAMP'를 사용할 수 있습니다.
이렇게 하면 새로운 데이터가 삽일될때마다 created_at 컬럼에 현재 시간이 자동으로 설정됩니다.
(DateTime에도 적용 가능)
수정 시 자동 업데이트
Timestamp 컬럼은 수정되면 자동으로 현재 시간으로 업데이트될 수 있습니다.
CREATE TABLE example_table (
id INT AUTO_INCREMENT PRIMARY KEY,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
...
);
위처럼 컬럼을 정의할 때 'ON UPDATE CURRENT_TIMESTAMP'를 사용할 수 있습니다.
이렇게 하면 데이터 수정될 때마다 updated_at 컬럼에 자동으로 현재 시간으로 업데이트됩니다.
(DateTime에도 적용 가능)
'Data > MySQL' 카테고리의 다른 글
| [MySQL] binlog(바이너리 로그)란? (0) | 2024.07.16 |
|---|---|
| [MySQL] 문자열 결합하기: CONCAT, GROUP_CONCAT (0) | 2024.07.08 |
| [MySQL] UPSERT(UPDATE + INSERT) (0) | 2024.06.28 |
| [MySQL] MySQL 버전 확인 (0) | 2023.10.28 |
| [MySQL] Mac에 MySQL 및 Workbench 설치하기 (1) | 2023.10.23 |