SQL 날짜 함수: 초보자를 위한 종합 가이드
안녕하세요, SQL 열정가 여러분! SQL 날짜 함수의 세계로 안내해드리는 여정에 환영합니다. 여러분의 친절한 이웃 컴퓨터 교사로서, 저는 데이터베이스 관리의 이 중요한 부분을 안내해드리는 것을 기대하고 있습니다. 코드를 한 줄도 작성해본 적이 없으신 분들도 걱정 마세요 - 우리는 가장 기본적인 것부터 시작하여 차례대로 진행하겠습니다.
날짜 함수의 중요성
먼저 간단한 이야기를 공유하겠습니다. 제 교사 경력 초반에, 생일 알림 앱을 개발하는 학생이 있었습니다. 그는 날짜 계산에 어려움을 겪다가 SQL 날짜 함수를 발견한 후, 앱이 거의 기능이 없는 것에서 인상적인 효율성을 가진 것으로 바뀌었습니다. 이 함수를 마스터하면 이런 힘이 있답니다!
날짜 데이터 유형 이해
H2: DATE 데이터 유형
SQL에서 날짜는 일반적으로 'YYYY-MM-DD' 형식으로 저장됩니다. 예를 들어:
CREATE TABLE events (
event_id INT,
event_name VARCHAR(50),
event_date DATE
);
INSERT INTO events VALUES (1, '회사 피크닉', '2023-07-15');
이 코드는 날짜 열을 가진 테이블을 생성하고 특정 날짜를 가진 행을 추가합니다.
H2: DATETIME 데이터 유형
날짜와 시간을 모두 저장해야 할 때 DATETIME이 도움이 됩니다:
CREATE TABLE logs (
log_id INT,
log_message VARCHAR(100),
log_timestamp DATETIME
);
INSERT INTO logs VALUES (1, '사용자 로그인', '2023-07-15 14:30:00');
이 예제는 이벤트의 날짜와 시간을 저장합니다.
필수 날짜 함수
이제 가장 흔히 사용되는 날짜 함수를 탐구해보겠습니다. 이를 표로 정리하여 쉽게 참조할 수 있도록 하겠습니다:
함수 | 설명 | 예제 |
---|---|---|
CURRENT_DATE() | 현재 날짜 반환 | SELECT CURRENT_DATE(); |
CURRENT_TIMESTAMP() | 현재 날짜와 시간 반환 | SELECT CURRENT_TIMESTAMP(); |
DATE() | datetime에서 날짜 부분 추출 | SELECT DATE('2023-07-15 14:30:00'); |
YEAR() | 날짜에서 연도 추출 | SELECT YEAR('2023-07-15'); |
MONTH() | 날짜에서 월 추출 | SELECT MONTH('2023-07-15'); |
DAY() | 날짜에서 일 추출 | SELECT DAY('2023-07-15'); |
DATEDIFF() | 두 날짜 간의 차이 계산 | SELECT DATEDIFF('2023-07-15', '2023-07-01'); |
DATE_ADD() | 지정된 시간 간격을 날짜에 추가 | SELECT DATE_ADD('2023-07-15', INTERVAL 10 DAY); |
DATE_SUB() | 지정된 시간 간격을 날짜에서 제거 | SELECT DATE_SUB('2023-07-15', INTERVAL 1 MONTH); |
이제 이를 실제 예제로 설명해보겠습니다!
H3: CURRENT_DATE()와 CURRENT_TIMESTAMP() 사용
이 함수들은 로그와 추적 목적으로 매우 유용합니다:
INSERT INTO logs (log_message, log_timestamp)
VALUES ('일일 백업 완료', CURRENT_TIMESTAMP());
이 쿼리는 현재 날짜와 시간으로 로그 항목을 추가합니다. 데이터에 자동 타임스탬프를 추가하는 것과 같습니다!
H3: 날짜 부분 추출
자주 특정 날짜 부분을 작업해야 할 때가 있습니다:
SELECT
event_name,
event_date,
YEAR(event_date) AS event_year,
MONTH(event_date) AS event_month,
DAY(event_date) AS event_day
FROM events;
이 쿼리는 이벤트와 그 날짜를 연도, 월, 일로 분해합니다. 이는 이벤트를 월이나 연도별로 정리하는 데 완벽합니다!
H3: 날짜 차이 계산
DATEDIFF()는 두 날짜 간의 일수를 찾는 데 사용됩니다:
SELECT
event_name,
event_date,
DATEDIFF(CURRENT_DATE(), event_date) AS days_since_event
FROM events;
이 쿼리는 각 이벤트 이후로 지났던 일수를 계산합니다. 기념일이나 기간 계산에 유용합니다!
H3: 시간 추가와 제거
다음 주나 전월에 일정을 예약해야 할 때 DATE_ADD()와 DATE_SUB()가 도와줍니다:
SELECT
event_name,
event_date,
DATE_ADD(event_date, INTERVAL 1 WEEK) AS next_week,
DATE_SUB(event_date, INTERVAL 1 MONTH) AS last_month
FROM events;
이 쿼리는 원래 이벤트 날짜와 미래 1주일, 과거 1개월 날짜를 보여줍니다. 반복 이벤트 계획에 적합합니다!
실제 적용 사례
이제 기본적인 내용을 다루었으므로, 실제 사용 사례를 몇 가지 살펴보겠습니다:
H3: 생일 알림
제 학생의 생일 알림 앱을 다시 떠올려보겠습니다. 다음과 같이 생일이 다가오는 사용자를 조회할 수 있습니다:
SELECT
name,
birthdate,
DATEDIFF(
DATE_ADD(birthdate,
INTERVAL YEAR(CURRENT_DATE()) - YEAR(birthdate) +
IF(DAYOFYEAR(CURRENT_DATE()) > DAYOFYEAR(birthdate), 1, 0)
YEAR),
CURRENT_DATE()
) AS days_until_birthday
FROM users
WHERE
DATEDIFF(
DATE_ADD(birthdate,
INTERVAL YEAR(CURRENT_DATE()) - YEAR(birthdate) +
IF(DAYOFYEAR(CURRENT_DATE()) > DAYOFYEAR(birthdate), 1, 0)
YEAR),
CURRENT_DATE()
) BETWEEN 0 AND 30
ORDER BY days_until_birthday;
이 복잡해 보이는 쿼리는 사실 매우 간단한 일을 합니다: 다음 30일 내에 생일이 다가오는 모든 사용자를 찾습니다. 여러 날짜 함수를 조합하여 특정 목표를 달성하는 좋은 예제입니다.
H3: 보고서 생성
날짜 함수는 보고서 작성에도 매우 유용합니다. 다음은 판매 보고서에 사용될 수 있는 쿼리입니다:
SELECT
YEAR(order_date) AS year,
MONTH(order_date) AS month,
COUNT(*) AS total_orders,
SUM(order_amount) AS total_sales
FROM orders
GROUP BY YEAR(order_date), MONTH(order_date)
ORDER BY year, month;
이 쿼리는 주문과 판매를 연도와 월별로 요약하여 시간에 따른 비즈니스 성과를 명확히 보여줍니다.
결론
축하합니다! SQL 날짜 함수의 세계로的第一步을 냈습니다. 이 강력한 도구들은 시간에 기반한 데이터를 쉽게 관리하는 데 도움이 될 것입니다. 여러분이 생일 알림 앱을 만들거나 보고서를 작성하거나 역사적 추세를 분석하는 데 자주 사용하게 될 것입니다.
기억하시오, 연습이 완벽을 만든다. 이 함수들을 여러분의 프로젝트에서 실험해보세요. 자주 사용하게 될 것이라는 것에 놀라게 될 것입니다!
마무리로, 약간의 SQL 유머를 전합니다: 데이터베이스 관리자들이 DATE 함수를 좋아하는 이유는 언제나 시간을 알고 있기 때문입니다! (아, 그렇죠, 우리 컴퓨터 교사는 노력해야 하죠!)
코드 작성을 계속하시고, 호기심을 유지하시고, 데이터 모험에서 즐거움을 느끼시길 바랍니다!
Credits: Image by storyset