티스토리 뷰
앞서 고민했던 것처럼 datetime과 timestamp도 어떤 걸 선택해야 하는지 궁금해졌다.
결론부터 말하면,
단순히 사용자가 특정 시간에 이벤트를 설정하거나 고정된 형식의 날짜를 저장하는 것이 목적이라면 datetime이 적합하다.
글로벌 타임존을 고려한 시간 처리나 시간 비교를 해야 할 경우 timestamp가 적합하다.
나 같은 경우에는 글로벌 타임존을 고려하여 시간을 처리할 필요는 없으니 datetime으로 설정하면 좋을 것 같다.
정리
| ✅ datetime | timestamp | |
| 사용 | - 날짜와 시간을 사람이 읽을 수 있는 형식으로 저장된다. - 일반적으로 타임존 정보를 저장하지 않기 때문에 타임존을 신경 쓸 필요가 없는 경우에 주로 사용된다. 사용시기 - 사람이 직관적으로 시간 정보를 읽고 입력해야 하는 상황에서 유리하다. - UI에서 날짜 선택 기능(캘린더)을 사용할 때 유용하다. - 시간대 고려가 필요 없는 고정된 시간 데이터를 다룰 때 적합하다. |
- 타임존이 포함된 UTC 시간을 기준으로 절대적인 시간 정보를 저장한다. 각 타임존에 맞춰서 변환이 가능하므로, 다양한 타임존에서 사용하는 애플리케이션에 유리하다. 사용 시기 - 글로벌 서비스나 다양한 타임존에서 사용되는 애플리케이션을 만들 때 유용하다. - React에서 날짜와 시간 데이터를 조작하거나, 사용자 위치에 따른 시간대 변환이 필요한 경우 적합하다. - 일정한 형식으로 저장된 데이터를 서버나 클라이언트에서 쉽게 비교하고 처리할 때 좋다. |
| 형식 | YYYY-MM-DD HH:MM:SS (예: 2024-10-20 15:30:00) | YYYY-MM-DD HH:MM:SS UTC Unix timestamp, 즉 1970년 1월 1일 00:00:00 UTC에서부터 경과한 초로 저장한다. (예: 1697800200 → 2024-10-20 15:30:00 UTC) |
| 결론 | datetime - 사용자가 날짜와 시간을 직접 입력하거나 수정해야 하는 경우라면 datetime을 사용하는 것이 직관적이다. 예) 예약 시스템, 일정 관리, 캘린더 애플리케이션 등에서 유리하다. timestamp - 서버와 클라이언트 간에 시간 동기화가 필요하거나, 다양한 타임존에서 동일한 시간 정보를 보존해야 하는 상황에서는 timestamp가 더 나을 수 있다. 예) 사용자가 전 세계에 흩어져 있는 서비스나, 시간대를 기준으로 데이터를 비교해야 하는 경우에 좋다. |
|
'리액트로 웹 개발 A to Z' 카테고리의 다른 글
| 데이터베이스 명명 규칙? (0) | 2024.10.24 |
|---|---|
| 협업할 때 데이터를 어떻게 저장하는 게 좋은 방법일까 (0) | 2024.10.23 |
| crreunt_timestamp와 now() (0) | 2024.10.23 |
| enum과 char / tinyint (0) | 2024.10.23 |
| 고유 pk id는 bigint냐 int냐 (0) | 2024.10.22 |