SQL에서는 데이터베이스 작업 중 현재 날짜와 시간을 검색하기 위한 함수가 제공됩니다. 특히 MySQL에서는 CURDATE()와 NOW()라는 두 가지 함수가 일반적으로 사용됩니다. 이러한 함수를 사용하면 현재 날짜와 시간을 쉽게 얻을 수 있어 데이터를 기록하고 관리하는 데 유용합니다. 이 글에서는 이러한 함수의 사용법과 그 차이점을 자세히 설명하겠습니다.
CURDATE() 함수 사용법
CURDATE() 함수는 현재 날짜를 얻기 위한 MySQL 내장 함수입니다. 이 함수는 시간 정보를 제외하고 연, 월, 일 정보만 반환합니다. 아래는 CURDATE() 함수의 기본 사용법입니다.
기본 사용 예제
현재 날짜를 얻으려면 다음 SQL 쿼리를 실행하십시오:
SELECT CURDATE();
이 쿼리를 실행하면 오늘의 날짜가 YYYY-MM-DD
형식으로 반환됩니다. 예를 들어, 2024년 5월 24일에 이 쿼리를 실행하면 결과는 다음과 같습니다:
+------------+
| CURDATE() |
+------------+
| 2024-05-24 |
+------------+
고급 예제: 테이블에 현재 날짜 삽입하기
CURDATE() 함수를 사용하여 테이블에 현재 날짜를 삽입할 수도 있습니다. 아래 예제에서는 새로운 주문을 orders
테이블에 삽입하고 주문 날짜를 현재 날짜로 설정합니다.
INSERT INTO orders (order_date, customer_id, product_id, quantity)
VALUES (CURDATE(), 12345, 67890, 1);
이 쿼리가 실행되면 orders
테이블에 새로운 행이 추가되고 order_date
필드가 현재 날짜로 채워집니다.
NOW() 함수 사용법
NOW() 함수는 현재 날짜와 시간을 얻기 위한 MySQL 내장 함수입니다. 이 함수는 연, 월, 일, 시, 분, 초 정보를 포함하는 타임스탬프를 반환합니다. 아래는 NOW() 함수의 기본 사용법입니다.
기본 사용 예제
현재 날짜와 시간을 얻으려면 다음 SQL 쿼리를 실행하십시오:
SELECT NOW();
이 쿼리를 실행하면 현재 타임스탬프가 YYYY-MM-DD HH:MM:SS
형식으로 반환됩니다. 예를 들어, 2024년 5월 24일 오후 2시 30분 45초에 이 쿼리를 실행하면 결과는 다음과 같습니다:
+---------------------+
| NOW() |
+---------------------+
| 2024-05-24 14:30:45 |
+---------------------+
고급 예제: 테이블에 현재 타임스탬프 삽입하기
NOW() 함수를 사용하여 테이블에 현재 타임스탬프를 삽입할 수도 있습니다. 아래 예제에서는 새로운 로그인 시도를 login_attempts
테이블에 삽입하고 시도 시간을 현재 날짜와 시간으로 설정합니다.
INSERT INTO login_attempts (user_id, attempt_time, status)
VALUES (12345, NOW(), 'SUCCESS');
이 쿼리가 실행되면 login_attempts
테이블에 새로운 행이 추가되고 attempt_time
필드가 현재 타임스탬프로 채워집니다.
CURDATE()와 NOW()의 차이점
CURDATE()와 NOW() 함수는 현재 날짜와 시간 정보를 검색하는 데 사용되지만, 반환되는 정보에 명확한 차이가 있습니다. 이러한 차이점을 이해하면 적절한 함수를 선택하는 데 도움이 됩니다.
CURDATE()의 특징
CURDATE()는 현재 날짜만 검색하는 함수입니다. 이 함수는 시간 정보를 포함하지 않으며 YYYY-MM-DD
형식으로 날짜를 반환합니다. 시스템 날짜를 기준으로 보고서를 생성하거나 날짜를 기준으로 데이터를 필터링하는 작업에 적합합니다.
사용 예제
SELECT CURDATE();
결과:
+------------+
| CURDATE() |
+------------+
| 2024-05-24 |
+------------+
NOW()의 특징
NOW()는 현재 날짜와 시간을 검색하는 함수입니다. 이 함수는 날짜와 시간을 포함하는 타임스탬프를 YYYY-MM-DD HH:MM:SS
형식으로 반환합니다. 로그 항목 생성이나 타임스탬프 정보가 필요한 데이터를 관리하는 작업에 적합합니다.
사용 예제
SELECT NOW();
결과:
+---------------------+
| NOW() |
+---------------------+
| 2024-05-24 14:30:45 |
+---------------------+
다양한 시나리오에 맞는 함수 선택
- CURDATE() 사용 예제: 날짜만 처리할 때. 예를 들어, 특정 날짜에 발생한 이벤트를 추출하거나 날짜를 기준으로 데이터를 집계하는 쿼리.
- NOW() 사용 예제: 날짜와 시간을 모두 처리할 때. 예를 들어, 로그 기록, 타임스탬프가 필요한 데이터 삽입 또는 시간을 기준으로 데이터를 관리하는 경우.
CURDATE()와 NOW()를 적절히 사용하여 필요한 정보를 정확하게 검색할 수 있습니다.
SQL 쿼리 예제
CURDATE()와 NOW() 함수를 사용한 몇 가지 실용적인 SQL 쿼리 예제를 소개합니다. 이러한 예제는 각 함수가 어떻게 결과를 반환하는지 보여주고 실제 사용 방법을 시연합니다.
현재 날짜를 얻는 쿼리
다음 쿼리는 CURDATE() 함수를 사용하여 현재 날짜를 얻습니다:
SELECT CURDATE();
이 쿼리를 실행하면 오늘의 날짜가 YYYY-MM-DD
형식으로 반환됩니다. 예를 들어, 결과는 다음과 같습니다:
+------------+
| CURDATE() |
+------------+
| 2024-05-24 |
+------------+
현재 날짜와 시간을 얻는 쿼리
다음 쿼리는 NOW() 함수를 사용하여 현재 날짜와 시간을 얻습니다:
SELECT NOW();
이 쿼리를 실행하면 현재 타임스탬프가 YYYY-MM-DD HH:MM:SS
형식으로 반환됩니다. 예를 들어, 결과는 다음과 같습니다:
+---------------------+
| NOW() |
+---------------------+
| 2024-05-24 14:30:45 |
+---------------------+
테이블에 현재 날짜 삽입 쿼리
다음 쿼리는 CURDATE() 함수를 사용하여 테이블에 현재 날짜를 삽입합니다:
INSERT INTO daily_reports (report_date, report_content)
VALUES (CURDATE(), 'Daily sales report content');
이 쿼리가 실행되면 daily_reports
테이블에 새로운 행이 추가되고 report_date
필드가 현재 날짜로 채워집니다.
테이블에 현재 타임스탬프 삽입 쿼리
다음 쿼리는 NOW() 함수를 사용하여 테이블에 현재 타임스탬프를 삽입합니다:
INSERT INTO event_logs (event_time, event_description)
VALUES (NOW(), 'User login event');
이 쿼리가 실행되면 event_logs
테이블에 새로운 행이 추가되고 event_time
필드가 현재 타임스탬프로 채워집니다.
이러한 예제를 통해 CURDATE()와 NOW() 함수의 사용법과 반환 결과를 이해할 수 있습니다. 이를 통해 날짜와 시간이 필요한 다양한 데이터베이스 작업을 효율적으로 수행할 수 있습니다.
고급 예제
CURDATE()와 NOW() 함수를 사용하여 현재 날짜와 시간을 활용하는 몇 가지 실용적인 쿼리를 소개합니다. 이러한 쿼리는 날짜와 시간을 기반으로 한 고급 데이터 조작 및 분석에 유용합니다.
최근 7일간의 데이터를 가져오는 쿼리
최근 7일간의 데이터를 얻으려면 CURDATE() 함수를 사용하여 현재 날짜를 기준으로 날짜를 계산하십시오.
SELECT * FROM orders
WHERE order_date >= CURDATE() - INTERVAL 7 DAY;
이 쿼리는 지난 7일 동안 발생한 모든 주문을 orders
테이블에서 추출합니다.
특정 날짜의 기록을 가져오는 쿼리
특정 날짜의 기록을 가져오려면 CURDATE() 함수를 사용하여 조건을 지정하십시오.
SELECT * FROM events
WHERE event_date = CURDATE();
이 쿼리는 오늘 발생한 모든 이벤트를 events
테이블에서 추출합니다.
지난 한 시간 동안의 로그인 시도를 가져오는 쿼리
지난 한 시간 동안 발생한 로그인 시도를 얻으려면 NOW() 함수를 사용하여 현재 시간을 기준으로 시간을 계산하십시오.
SELECT * FROM login_attempts
WHERE attempt_time >= NOW() - INTERVAL 1 HOUR;
이 쿼리는 지난 한 시간 동안 발생한 모든 로그인 시도를 login_attempts
테이블에서 추출합니다.
자동 데이터 업데이트를 위한 현재 타임스탬프 사용 쿼리
현재 타임스탬프를 사용하여 레코드를 업데이트하려면 NOW() 함수를 사용하십시오.
UPDATE users
SET last_login = NOW()
WHERE user_id = 12345;
이 쿼리는 users
테이블의 특정 사용자의 last_login
필드를 현재 타임스탬프로 업데이트합니다.
이번 달 초부터 오늘까지의 매출 합계를 구하는 쿼리
이번 달 초부터 오늘까지의 매출 합계를 계산하려면 CURDATE() 함수를 사용하여 월의 첫 날 날짜를 계산하십시오.
SELECT SUM(sales_amount) FROM sales
WHERE sale_date >= DATE_FORMAT(CURDATE() ,'%Y-%m-01') AND sale_date <= CURDATE();
이 쿼리는 이번 달 첫날부터 오늘까지의 sales
테이블의 총 매출을 집계합니다.
CURDATE()와 NOW() 함수를 사용한 이러한 고급 쿼리 예제를 통해 날짜와 시간을 기반으로 한 다양한 데이터 조작 및 분석을 효율적으로 수행할 수 있습니다.
결론
CURDATE()와 NOW() 함수는 MySQL에서 현재 날짜와 시간을 가져오는 강력한 도구입니다. CURDATE()는 날짜만 반환하여 날짜 기반 작업에 적합하고, NOW()는 타임스탬프를 반환하여 시간 정보가 필요한 경우에 유용합니다. 이러한 함수를 적절히 사용하여 데이터를 효율적으로 기록하고 관리하며 분석할 수 있습니다. 이 글에서 제공한 기본 사용법 및 고급 예제를 참고하여 날짜와 시간을 활용한 고급 SQL 쿼리를 작성해보십시오.