코딩 스쿨 MySQL

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

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'
  • TIMESTAMPNOW()와 같은 함수를 사용하여 현재 시간을 저장할 수 있습니다.

3. 날짜 및 시간 쿼리

MySQL에서는 날짜 및 시간 데이터를 기반으로 다양한 쿼리를 실행할 수 있습니다. 다음은 날짜 데이터를 검색하거나 처리하는 방법에 대한 예제입니다.

  1. 특정 날짜의 데이터를 조회
SELECT * FROM events WHERE event_date = '2024-10-15';

  1. 특정 기간 내의 데이터를 조회
SELECT * FROM events WHERE event_date BETWEEN '2024-10-01' AND '2024-10-31';

  1. 날짜와 시간의 범위를 함께 검색
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에서는 날짜 및 시간을 이용한 연산이 가능합니다. 예를 들어, 이벤트가 언제 열리는지 확인하거나, 두 날짜 간의 차이를 계산하는 등의 작업이 가능합니다.

  1. 날짜 간의 차이 계산
SELECT DATEDIFF('2024-12-25', CURDATE()) AS days_until_christmas;

이 쿼리는 현재 날짜와 2024년 크리스마스 날짜 사이의 차이를 일(day) 단위로 계산합니다.

  1. 미래 날짜 계산
SELECT DATE_ADD(CURDATE(), INTERVAL 1 MONTH) AS next_month;

이 쿼리는 현재 날짜에 한 달을 더한 날짜를 반환합니다.

  1. 특정 시간 더하기
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의 함수들을 잘 활용하면 데이터 분석, 시간 기반의 검색 및 계산을 쉽게 수행할 수 있습니다.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com