MySQL Dates
MySQL Dates: 날짜 및 시간 처리와 활용 방법
MySQL에서 날짜와 시간 데이터를 다루는 것은 매우 중요한 작업입니다. MySQL은 날짜와 시간을 저장하고 처리하는 다양한 데이터 타입과 기능을 제공하여, 날짜 기반의 쿼리나 계산 등을 효율적으로 처리할 수 있습니다. 이 글에서는 MySQL에서 날짜 및 시간을 처리하는 방법, 데이터 타입, 주요 함수, 그리고 실전 예제를 다룰 것입니다.
1. MySQL의 날짜 및 시간 데이터 타입
MySQL에서 날짜 및 시간을 저장할 때 사용할 수 있는 주요 데이터 타입은 다음과 같습니다.
- DATE:
YYYY-MM-DD
형식으로 연, 월, 일을 저장합니다. 시간 정보는 포함되지 않습니다. - DATETIME:
YYYY-MM-DD HH:MM:SS
형식으로 날짜와 시간을 함께 저장합니다. 일반적인 날짜 및 시간 정보 저장에 사용됩니다. - TIMESTAMP: UNIX 타임스탬프 형식으로 현재 UTC 시간 기준으로 저장됩니다.
DATETIME
과 유사하지만 타임존 정보에 영향을 받습니다. - TIME:
HH:MM:SS
형식으로 시간만 저장합니다. - YEAR: 연도를 저장하는 데 사용됩니다.
다음은 각 데이터 타입을 사용하는 테이블 생성 예제입니다.
CREATE TABLE events (
event_id INT PRIMARY KEY AUTO_INCREMENT,
event_name VARCHAR(100),
event_date DATE,
event_time TIME,
event_datetime DATETIME,
event_timestamp TIMESTAMP
);
2. 날짜 및 시간 데이터 삽입
날짜와 시간 데이터를 삽입할 때는 각 데이터 타입에 맞는 형식을 사용해야 합니다. 다음은 events
테이블에 데이터를 삽입하는 예제입니다.
INSERT INTO events (event_name, event_date, event_time, event_datetime, event_timestamp)
VALUES ('Concert', '2024-10-15', '18:30:00', '2024-10-15 18:30:00', NOW());
DATE
형식은'YYYY-MM-DD'
TIME
형식은'HH:MM:SS'
DATETIME
형식은'YYYY-MM-DD HH:MM:SS'
TIMESTAMP
는NOW()
와 같은 함수를 사용하여 현재 시간을 저장할 수 있습니다.
3. 날짜 및 시간 쿼리
MySQL에서는 날짜 및 시간 데이터를 기반으로 다양한 쿼리를 실행할 수 있습니다. 다음은 날짜 데이터를 검색하거나 처리하는 방법에 대한 예제입니다.
- 특정 날짜의 데이터를 조회
SELECT * FROM events WHERE event_date = '2024-10-15';
- 특정 기간 내의 데이터를 조회
SELECT * FROM events WHERE event_date BETWEEN '2024-10-01' AND '2024-10-31';
- 날짜와 시간의 범위를 함께 검색
SELECT * FROM events
WHERE event_datetime BETWEEN '2024-10-15 18:00:00' AND '2024-10-15 20:00:00';
4. 날짜 및 시간 관련 함수
MySQL은 날짜 및 시간을 처리하는 다양한 내장 함수를 제공합니다. 이 함수들은 날짜와 시간 데이터를 더 쉽게 다루고 조작할 수 있게 도와줍니다.
주요 함수
-
NOW(): 현재 날짜와 시간을 반환합니다.
SELECT NOW(); -- 2024-10-11 12:45:00 같은 형식으로 반환
-
CURDATE(): 현재 날짜를 반환합니다 (
YYYY-MM-DD
형식).SELECT CURDATE(); -- 예: 2024-10-11
-
CURTIME(): 현재 시간을 반환합니다 (
HH:MM:SS
형식).SELECT CURTIME(); -- 예: 12:45:00
-
DATE_ADD(): 날짜에 특정 간격을 더합니다.
SELECT DATE_ADD('2024-10-11', INTERVAL 7 DAY); -- 7일 더하기
-
DATE_SUB(): 날짜에서 특정 간격을 뺍니다.
SELECT DATE_SUB('2024-10-11', INTERVAL 3 MONTH); -- 3개월 빼기
-
DATEDIFF(): 두 날짜 간의 차이를 일(day) 단위로 반환합니다.
SELECT DATEDIFF('2024-10-15', '2024-10-11'); -- 결과: 4일 차이
-
YEAR(), MONTH(), DAY(): 날짜에서 각각 연도, 월, 일만 추출합니다.
SELECT YEAR(event_date), MONTH(event_date), DAY(event_date) FROM events;
-
HOUR(), MINUTE(), SECOND(): 시간에서 각각 시, 분, 초만 추출합니다.
SELECT HOUR(event_time), MINUTE(event_time), SECOND(event_time) FROM events;
5. 날짜 및 시간 계산
MySQL에서는 날짜 및 시간을 이용한 연산이 가능합니다. 예를 들어, 이벤트가 언제 열리는지 확인하거나, 두 날짜 간의 차이를 계산하는 등의 작업이 가능합니다.
- 날짜 간의 차이 계산
SELECT DATEDIFF('2024-12-25', CURDATE()) AS days_until_christmas;
이 쿼리는 현재 날짜와 2024년 크리스마스 날짜 사이의 차이를 일(day) 단위로 계산합니다.
- 미래 날짜 계산
SELECT DATE_ADD(CURDATE(), INTERVAL 1 MONTH) AS next_month;
이 쿼리는 현재 날짜에 한 달을 더한 날짜를 반환합니다.
- 특정 시간 더하기
SELECT DATE_ADD(NOW(), INTERVAL 2 HOUR) AS time_in_2_hours;
이 쿼리는 현재 시간에 2시간을 더한 결과를 반환합니다.
6. 날짜 및 시간 포맷 변경
MySQL에서 날짜와 시간을 다른 형식으로 출력하고 싶다면 DATE_FORMAT()
함수를 사용할 수 있습니다. 예를 들어, 날짜를 YYYY/MM/DD
형식으로
출력하거나, 시간을 12시간제로 변환하는 등의 작업을 할 수 있습니다.
SELECT DATE_FORMAT(NOW(), '%Y/%m/%d %H:%i:%s') AS formatted_date_time;
이 쿼리는 현재 날짜와 시간을 YYYY/MM/DD HH:MM:SS
형식으로 출력합니다.
주요 형식 지정자
%Y
: 연도 (4자리)%m
: 월 (2자리)%d
: 일 (2자리)%H
: 시간 (24시간제)%i
: 분%s
: 초
요약
MySQL에서 날짜와 시간은 DATE
, DATETIME
, TIMESTAMP
등 다양한 데이터 타입으로 저장할 수 있으며, 이를 처리하기 위한
함수들도 많이 제공됩니다. 날짜와 시간을 다루는 MySQL의 함수들을 잘 활용하면 데이터 분석, 시간 기반의 검색 및 계산을 쉽게 수행할 수 있습니다.