📅 SQL에서 DATE, DATETIME, TIMESTAMP 완전 정복 (MySQL)

2025. 5. 15. 15:25·DB/SQL
목차
  1. ✅ 1. 기본 정의
  2. 💡 핵심 정리
  3. 🕐 2. 저장 예시 및 출력 형태
  4. 🌍 3. 타임존(Timezone) 차이
  5. DATETIME은 타임존을 무시
  6. TIMESTAMP는 타임존 영향을 받음
  7. ❗ 주의: 타임존이 중요한 글로벌 서비스라면 
  8. TIMESTAMP + UTC로 통일하는 게 안정적이다!
  9. 🔁 4. 변환(형 변환) 방법
  10. DATE <–> DATETIME
  11. DATETIME ↔ TIMESTAMP
  12. 📊 5. 날짜 추출 함수 활용법
  13. 🧠 6. 언제 어떤 타입을 써야 할까?
  14. 🔐 보너스: 자동 입력 타임스탬프 설정
  15. 🧾 정리 한 줄 요약!

이게 도대체 뭐가 다른 거야? 🤯
MySQL을 쓰다 보면 DATE, DATETIME, TIMESTAMP 중 어떤 걸 써야 할지 헷갈릴 때가 많다.
오늘은 이 세 가지 타입의 차이점과 특징, 변환 방식, 실전 사용 팁까지 모두 정리해보자.

 


 

✅ 1. 기본 정의

자료형 설명 저장 범위 시간 포함 여부 타임존 영향
DATE 날짜만 저장 1000-01-01 ~
9999-12-31
❌ (시간 없음) ❌
DATETIME 날짜 + 시간 저장 1000-01-01 00:00:00 ~
9999-12-31 23:59:59
✅ ❌
TIMESTAMP 날짜 + 시간 저장 (UNIX 기반) 1970-01-01 00:00:01 UTC ~
2038-01-19 03:14:07 UTC
✅ ✅ (타임존 영향 받음)

 

💡 핵심 정리

 

  • DATE: 연/월/일만 필요할 때
  • DATETIME: 연/월/일/시간/분/초를 저장하되, 타임존에 민감하지 않은 절대 시간
  • TIMESTAMP: UTC 기준 상대 시간이며, 타임존에 따라 값이 변할 수 있음

 


 

🕐 2. 저장 예시 및 출력 형태

-- DATE
INSERT INTO table (col) VALUES ('2024-05-15');

-- DATETIME
INSERT INTO table (col) VALUES ('2024-05-15 14:30:00');

-- TIMESTAMP
INSERT INTO table (col) VALUES (CURRENT_TIMESTAMP);
타입 저장 값 출력 형태
DATE 2024-05-15 ‘YYYY-MM-DD’
DATETIME 2024-05-15 14:30:00 ‘YYYY-MM-DD HH:MM:SS’
TIMESTAMP 2024-05-15 14:30:00 ‘YYYY-MM-DD HH:MM:SS’ (시스템 타임존 기준 변동 가능)

 


 

🌍 3. 타임존(Timezone) 차이

 

 

DATETIME은 타임존을 무시

 

→ 그냥 문자처럼 시간 정보를 저장함. MySQL 서버의 타임존이 바뀌어도 값은 그대로.

 

 

TIMESTAMP는 타임존 영향을 받음

 

→ 내부적으로 UTC로 저장되고, 서버나 세션 타임존 설정에 따라 출력 값이 바뀔 수 있음

-- 타임존 확인
SELECT @@global.time_zone, @@session.time_zone;

-- 타임존 변경
SET time_zone = '+09:00';

 

❗ 주의: 타임존이 중요한 글로벌 서비스라면 

TIMESTAMP + UTC로 통일하는 게 안정적이다!

 


 

🔁 4. 변환(형 변환) 방법

 

 

DATE <–> DATETIME

-- DATE → DATETIME
SELECT CAST('2024-05-15' AS DATETIME);  
-- 결과: 2024-05-15 00:00:00

-- DATETIME → DATE
SELECT DATE('2024-05-15 13:45:00');     
-- 결과: 2024-05-15

 

DATETIME ↔ TIMESTAMP

-- DATETIME → TIMESTAMP (타임존 고려)
SELECT CONVERT_TZ('2024-05-15 13:45:00', '+00:00', '+09:00');

-- TIMESTAMP → DATETIME (단순 출력은 같지만 내부 로직 다름)
SELECT CAST(NOW() AS DATETIME);

 


 

📊 5. 날짜 추출 함수 활용법

함수 설명 예시
YEAR(col) 연도 추출 YEAR(created_at) → 2025
MONTH(col) 월 추출 MONTH(created_at) → 5
DAY(col) 일 추출 DAY(created_at) → 15
DATE(col) 날짜만 추출 (시간 제거) DATE(created_at) → ‘2025-05-15’
TIME(col) 시간만 추출 TIME(created_at) → ‘14:30:00’

✅ DATE, DATETIME, TIMESTAMP 모두 추출 가능!

→ 하지만 DATE에는 TIME() 쓰면 NULL!

 


 

🧠 6. 언제 어떤 타입을 써야 할까?

상황 추천 타입 이유
생일, 기념일 저장 DATE 시간 필요 없음
주문 시간, 결제 시간 DATETIME 시간은 중요하지만 타임존 고려하지 않음
로그인 기록, 글로벌 트래픽 기록 TIMESTAMP UTC 기반, 타임존 계산이 정확함

 


 

🔐 보너스: 자동 입력 타임스탬프 설정

-- created_at: 삽입 시 자동 입력
-- updated_at: 수정 시 자동 갱신
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

 


 

🧾 정리 한 줄 요약!

타입 날짜 시간 타임존 영향 추천 사용처
DATE ✅ ❌ ❌ 생일, 단순 날짜
DATETIME ✅ ✅ ❌ 주문 기록, 예약 시스템
TIMESTAMP ✅ ✅ ✅ 로그인 로그, 서버 트래픽, 글로벌 앱

 


이제 더 이상 DATE, DATETIME, TIMESTAMP에서 헤매지 말자!

 

 

'DB > SQL' 카테고리의 다른 글

SQL - 20250604  (1) 2025.06.04
SQL - 20250515  (2) 2025.05.15
SQL - 20250514  (0) 2025.05.14
SQL - 20250513  (2) 2025.05.13
SQL - 20250508  (0) 2025.05.08
  1. ✅ 1. 기본 정의
  2. 💡 핵심 정리
  3. 🕐 2. 저장 예시 및 출력 형태
  4. 🌍 3. 타임존(Timezone) 차이
  5. DATETIME은 타임존을 무시
  6. TIMESTAMP는 타임존 영향을 받음
  7. ❗ 주의: 타임존이 중요한 글로벌 서비스라면 
  8. TIMESTAMP + UTC로 통일하는 게 안정적이다!
  9. 🔁 4. 변환(형 변환) 방법
  10. DATE <–> DATETIME
  11. DATETIME ↔ TIMESTAMP
  12. 📊 5. 날짜 추출 함수 활용법
  13. 🧠 6. 언제 어떤 타입을 써야 할까?
  14. 🔐 보너스: 자동 입력 타임스탬프 설정
  15. 🧾 정리 한 줄 요약!
'DB/SQL' 카테고리의 다른 글
  • SQL - 20250604
  • SQL - 20250515
  • SQL - 20250514
  • SQL - 20250513
Geisha
Geisha
개발 일기
  • Geisha
    Geisha
    Geisha
  • 전체
    오늘
    어제
    • 분류 전체보기 (326)
      • Algorithm & Data Structures (246)
        • BOJ (104)
        • SWEA (1)
        • Programers (137)
        • Data Structures (3)
      • DB (27)
        • SQL (21)
        • RDBMS (2)
      • Java (1)
        • Class (1)
      • Spring (5)
        • Spring MVC (1)
        • Annotations (1)
      • CS (36)
        • 운영체제 (13)
        • 네트워크 (5)
      • Tool (6)
        • Git (5)
        • AWS (1)
      • Project (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    스택
    baekjoon
    백트래킹
    알고리즘
    dp
    programmers
    BFS
    algorithm
    Java
    전위순회
    PriorityQueue
    백준
    이분탐색
    unionfind
    경로압축
    Dijkstra
    골드
    SQL
    유니온파인드
    DynamicProgramming
    Stack
    동적계획법
    Union-Find
    binarySearch
    다익스트라
    후위순회
    투포인터
    구현
    dfs
    프로그래머스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
Geisha
📅 SQL에서 DATE, DATETIME, TIMESTAMP 완전 정복 (MySQL)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.