날짜·시간 정보는 거의 모든 서비스에서 중요한 데이터이다. 회원 가입일, 주문일, 결제일, 이벤트 기간 등 수많은 곳에서 사용된다.
초보자가 자주 하는 실수 중 하나가 **날짜·시간을 문자열(VARCHAR)**로 저장하는 것이다.
DATEDIFF, DATE_ADD 등)를 활용하기 어렵다.따라서 날짜/시간은 반드시 전용 타입을 사용해서 저장한다.
MySQL 기준으로 자주 사용하는 타입은 다음과 같다.
DATE
YYYY-MM-DD 형식의 날짜만 저장한다.TIME
HH:MM:SS 형식의 시간만 저장한다.DATETIME
TIMESTAMP
실무에서는 보통 비즈니스 도메인에 대한 시각(주문일, 가입일 등)은 DATETIME으로 기록하고, 시스템 로그나 변경 이력 등은 TIMESTAMP로 관리하는 식으로 역할을 나눈다.
앞서 봤던 날짜/시간 네이밍 규칙과 타입 선택은 서로 연결되어 있다.
created_at, updated_at, deleted_at, ordered_at 등은 보통 DATETIME 타입으로 둔다.birth_date, join_date 등은 DATE 타입이 적합하다.opening_time, closing_time 등은 TIME 타입을 사용한다.네이밍만 통일하는 것이 아니라, 각 이름에 어울리는 데이터 타입까지 함께 규칙으로 정해 두면 팀원들이 설계와 구현을 훨씬 수월하게 진행할 수 있다.