- 1 1. 소개
- 2 2. MySQL에서 현재 날짜/시간을 가져오는 함수 (비교 표)
- 3 3. NOW() 함수 상세
- 4 4. SYSDATE() 함수 특성
- 5 5. CURTIME() 및 CURRENT_TIME()
- 6 6. 현재 시간을 활용한 실용적인 쿼리 예시
- 7 7. FAQ (자주 묻는 질문)
- 8 8. 요약
1. 소개
MySQL에서 현재 시간을 가져오는 것은 데이터베이스 관리의 중요한 부분입니다.
예를 들어, 다음과 같은 상황에서 현재 시간을 가져와야 할 수 있습니다:
- 데이터 삽입 시 자동으로 생성 타임스탬프를 기록 (예: 새 사용자가 가입할 때의 타임스탬프)
- 사용자 로그인 시간을 기록 (예: 로그인 기록 관리)
- 특정 시간 범위 내의 데이터 조회 (예: 지난 24시간의 주문 내역 가져오기)
- 시스템 실행 로그 기록 (예: 오류 로그 및 이벤트 로그 관리)
보시다시피, 데이터 관리와 로깅을 위해 “현재 시간”을 정확히 가져오는 것은 데이터베이스 운영에 필수적입니다.
이 글에서는 실제 SQL 쿼리를 사용하여 MySQL에서 현재 시간을 가져오는 방법을 자세히 설명합니다.
또한 일반적으로 사용되는 함수들의 차이점, 올바른 함수를 선택하는 방법, 실용적인 쿼리 예시 등을 다룰 것이며, 초급부터 중급 사용자까지 모두에게 유용합니다.
2. MySQL에서 현재 날짜/시간을 가져오는 함수 (비교 표)
MySQL은 현재 시간을 가져오는 다양한 함수를 제공합니다.
사용 사례에 맞는 함수를 선택하는 것이 중요하지만, 차이점을 혼란스러워하는 경우가 많습니다.
이 섹션에서는 MySQL에서 현재 날짜/시간을 가져오는 주요 함수들을 비교하고, 각 특성을 자세히 설명합니다.
2.1 MySQL 시간 함수 비교 표
| Function | What it returns | Format | Notes |
|---|---|---|---|
| NOW() | Current date and time | YYYY-MM-DD HH:MM:SS | Most commonly used |
| SYSDATE() | Date and time at execution | YYYY-MM-DD HH:MM:SS | Unlike NOW(), it can change on each execution |
| CURTIME() | Current time | HH:MM:SS | Time only (no date) |
| CURRENT_TIME() | Current time | HH:MM:SS | Same as CURTIME() |
| CURRENT_TIMESTAMP() | Current date and time | YYYY-MM-DD HH:MM:SS | Almost the same as NOW() |
| UTC_TIMESTAMP() | Current UTC date and time | YYYY-MM-DD HH:MM:SS | Time zone is fixed to UTC |
위 표에서 볼 수 있듯이 대부분의 함수는 “현재 날짜와 시간” 또는 “현재 시간”을 반환하지만, 가장 적합한 함수는 목적에 따라 다릅니다.
2.2 각 함수 개요 및 특성
NOW() 함수
- 현재 날짜와 시간을 가져오는 가장 일반적인 함수
- SQL 문이 시작되는 순간의 시간을 반환합니다
- 데이터 삽입 또는 업데이트 시 타임스탬프에 자주 사용됩니다
SELECT NOW();
예시 출력
2025-02-14 15:30:45
SYSDATE() 함수
- 실행 순간의 현재 시간을 가져옵니다
- NOW()와 달리, SYSDATE()는 평가될 때마다 다른 값을 반환할 수 있습니다 (트랜잭션 내에서도 변경될 수 있습니다)
SELECT SYSDATE();
예시 출력
2025-02-14 15:30:47
CURTIME() 함수
- 시간만 가져옵니다 (HH:MM:SS)
- 날짜가 필요 없을 때 유용합니다
SELECT CURTIME();
예시 출력
15:30:45
CURRENT_TIME() 함수
- CURTIME()와 동일하게 동작합니다
- SQL 표준을 따르는 함수 이름입니다
SELECT CURRENT_TIME();
예시 출력
15:30:45
CURRENT_TIMESTAMP() 함수
- NOW()와 동일하게 동작합니다
- 컬럼의
DEFAULT값으로 지정할 수 있습니다 (NOW()보다DEFAULT에 더 적합한 경우가 많습니다)SELECT CURRENT_TIMESTAMP();
예시 출력
2025-02-14 15:30:45
테이블을 생성할 때 기본값으로 설정:
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
UTC_TIMESTAMP() 함수
- 현재 UTC(협정 세계시)를 가져옵니다
- 서버 시간대에 의존하지 않아 일관된 타임스탬프를 제공합니다
SELECT UTC_TIMESTAMP();
예시 출력
2025-02-14 06:30:45
2.3 어떤 함수를 사용해야 할까요?
| Use case | Recommended function |
|---|---|
| Get the current date and time | NOW() |
| Get a different timestamp each time within a transaction | SYSDATE() |
| Need only the current time (HH:MM:SS) | CURTIME() or CURRENT_TIME() |
| Set as a table default value | CURRENT_TIMESTAMP() |
| Get UTC time | UTC_TIMESTAMP() |
일반적으로, 일반적인 날짜/시간 조회에는 NOW()가 보통 적합한 선택입니다.
하지만 사용 사례에 맞는 최적의 함수를 선택하면 보다 유연하고 신뢰성 있는 데이터 작업이 가능합니다.
3. NOW() 함수 상세
MySQL NOW() 함수는 현재 날짜와 시간(날짜 + 시간)을 가져오는 가장 일반적으로 사용되는 함수입니다.
데이터베이스에 타임스탬프를 저장하거나 특정 시간 범위 내의 데이터를 조회할 때 널리 사용됩니다.
3.1 NOW() 기본 사용법
NOW() 구문
SELECT NOW();
예시 출력
2025-02-14 15:30:45
- 출력 형식은
YYYY-MM-DD HH:MM:SS(년-월-일 시:분:초) 입니다. - 시간은 MySQL의 기본 시간대 설정을 기반으로 가져옵니다.
3.2 NOW()의 일반적인 사용 사례
① 데이터를 삽입할 때 현재 시간 기록
데이터베이스에 데이터를 삽입할 때 NOW()를 사용하여 생성 타임스탬프를 기록할 수 있습니다.
INSERT INTO users (name, created_at) VALUES ('Sato', NOW());
② 데이터를 업데이트할 때 현재 시간 기록
UPDATE users SET last_login = NOW() WHERE id = 1;
③ 특정 기간의 데이터 조회
SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 1 DAY;
INTERVAL 1 DAY를 지정하면 “지난 1일간의 데이터”를 조회할 수 있습니다.
3.3 반환 유형 및 출력 형식 변경 방법
NOW()의 반환 유형
DATETIME유형 (YYYY-MM-DD HH:MM:SS)- 문자열로도 취급할 수 있습니다.
SELECT NOW(), typeof(NOW());
형식 변경 방법
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s') AS formatted_time;
예시 출력
2025-02-14 15:30:45
3.4 NOW()와 SYSDATE()의 차이점
| Function | When it’s evaluated | Notes |
|---|---|---|
| NOW() | At query start | Returns a fixed timestamp for the statement |
| SYSDATE() | At execution time | Can return different timestamps within the same statement |
SELECT NOW(), SLEEP(3), NOW();
SELECT SYSDATE(), SLEEP(3), SYSDATE();
예시 출력
NOW() | SLEEP(3) | NOW()
2025-02-14 15:30:45 | wait 3 seconds | 2025-02-14 15:30:45
SYSDATE() | SLEEP(3) | SYSDATE()
2025-02-14 15:30:45 | wait 3 seconds | 2025-02-14 15:30:48
🚨 트랜잭션을 사용할 경우, 일관성을 위해 NOW()를 권장합니다.
3.5 NOW()의 제한 사항 및 참고 사항
① 시간대에 의존
SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');
② 테이블 기본값으로는 CURRENT_TIMESTAMP 사용
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
3.6 NOW() 요약
NOW()는 MySQL에서 현재 날짜와 시간을 가져오는 가장 일반적인 함수입니다.- 삽입, 업데이트, 시간 기반 데이터 조회에 사용할 수 있습니다.
- 트랜잭션 내에서 일관된 타임스탬프가 필요할 때
NOW()를 사용하세요. SYSDATE()는 평가할 때마다 다른 시간을 반환하므로 정확한 실행 시간이 필요할 때 사용합니다.- 다른 시간대로 시간을 가져오려면
CONVERT_TZ()를 사용하세요.
📌 결론: 대부분의 경우, MySQL에서 현재 날짜와 시간을 얻기 위해 NOW()가 가장 좋은 선택입니다.

4. SYSDATE() 함수 특성
SYSDATE() 함수는 MySQL에서 현재 날짜와 시간을 얻는 또 다른 방법이지만, NOW()와는 다르게 동작합니다.
이 섹션에서는 SYSDATE()의 기본 사용법, NOW()와의 차이점, 그리고 중요한 주의사항을 설명합니다.
4.1 SYSDATE()란?
SYSDATE()는 문이 실행되는 시점의 시간을 반환하는 함수입니다.
NOW()와 달리, 평가될 때마다 다른 타임스탬프를 반환합니다.
SYSDATE() 구문
SELECT SYSDATE();
예시 출력
2025-02-14 16:00:45
YYYY-MM-DD HH:MM:SS형식으로 반환됩니다.- 쿼리가 실행된 순간을 나타냅니다
4.2 SYSDATE()와 NOW()의 차이점
| Function | When it’s evaluated | Notes |
|---|---|---|
| NOW() | At query start | Returns a fixed timestamp for the statement |
| SYSDATE() | At execution time | Returns a different timestamp each time |
동작 비교: NOW() vs SYSDATE()
SELECT NOW(), SLEEP(3), NOW();
SELECT SYSDATE(), SLEEP(3), SYSDATE();
예시 출력
NOW() | SLEEP(3) | NOW()
2025-02-14 16:00:45 | wait 3 seconds | 2025-02-14 16:00:45
SYSDATE() | SLEEP(3) | SYSDATE()
2025-02-14 16:00:45 | wait 3 seconds | 2025-02-14 16:00:48
📌 핵심 포인트
NOW()는 문이 시작된 시점의 타임스탬프를 유지하므로 변하지 않습니다.SYSDATE()는 평가될 때마다 다른 타임스탬프를 반환하므로 3초 후에 변경됩니다.
🚨 트랜잭션 처리에는 NOW()를 사용하세요
SYSDATE()는 멀티스레드 환경에서NOW()와 다르게 동작할 수 있기 때문에, 트랜잭션 일관성을 위해 일반적으로NOW()를 권장합니다.
4.3 SYSDATE() 사용 예시
① 데이터 삽입 시 현재 시간 기록
INSERT INTO logs (event, created_at) VALUES ('User login', SYSDATE());
② 데이터 업데이트 시 현재 시간 기록
UPDATE users SET last_login = SYSDATE() WHERE id = 1;
③ 특정 형식으로 현재 시간 가져오기
SELECT DATE_FORMAT(SYSDATE(), '%Y-%m-%d %H:%i:%s') AS formatted_time;
예시 출력
2025-02-14 16:05:30
4.4 SYSDATE()의 제한 사항 및 참고 사항
① 트랜잭션 동작
NOW()문이 시작된 시점의 타임스탬프를 유지합니다 , 따라서 트랜잭션 내에서 일관되게 사용할 수 있습니다.SYSDATE()는 매번 다른 타임스탬프를 반환합니다 , 그래서 트랜잭션 내에서 시간 차이가 발생할 수 있습니다.
② DEFAULT 값으로 사용할 수 없음
SYSDATE()테이블 컬럼DEFAULT값으로 설정할 수 없습니다 .
✅ 해결책: DEFAULT CURRENT_TIMESTAMP를 사용하세요.
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
4.5 SYSDATE()를 언제 사용해야 할까요?
| Use case | Recommended function |
|---|---|
| Typical current timestamp retrieval | NOW() |
| Use a consistent timestamp within a transaction | NOW() |
| Need the exact execution time | SYSDATE() |
🚀 SYSDATE()는 실시간 로깅에 적합하지만 트랜잭션 처리에는 이상적이지 않습니다.
4.6 SYSDATE() 요약
NOW()와 달리 SYSDATE()는 실행 시점의 타임스탬프를 가져옵니다.- 매번 다른 값을 반환할 수 있어 실시간 로깅에 유용합니다.
- 트랜잭션 일관성을 위해
NOW()를 권장합니다. - DEFAULT 값으로는
CURRENT_TIMESTAMP를 사용하세요.
📌 결론: 일반적인 타임스탬프 조회에는 NOW()가 가장 좋으며, 정확한 실행 시점을 원한다면 SYSDATE()를 선택하세요.
5. CURTIME() 및 CURRENT_TIME()
MySQL에서 현재 시간만 필요할 때, CURTIME()와 CURRENT_TIME()을 사용합니다 (시간만 (HH:MM:SS)).
이 섹션에서는 각각의 기본 사용법, 차이점 및 실용적인 예시를 설명합니다.
5.1 CURTIME()란?
CURTIME()는 MySQL에서 현재 시간(시, 분, 초)을 가져오는 함수입니다.
핵심 특징은 날짜를 포함하지 않고 시간 부분만 반환한다는 점입니다.
CURTIME() 구문
SELECT CURTIME();
예시 출력
16:30:45
- 형식:
HH:MM:SS - 서버 시간대 설정에 따라 달라집니다
NOW()와 달리, 날짜 정보가 필요 없을 때 적합합니다
5.2 CURRENT_TIME()란?
CURRENT_TIME()는 CURTIME()와 마찬가지로 현재 시간(HH:MM:SS)을 가져오는 함수입니다.
실제로는 CURTIME()와 정확히 동일하게 동작합니다.
CURRENT_TIME() 구문
SELECT CURRENT_TIME();
예시 출력
16:30:45
📌 차이점은 무엇인가요?
CURTIME()는 MySQL 전용CURRENT_TIME()는 SQL 표준- 동일하게 동작합니다
- 가독성 선호도에 따라 선택하세요(성능 차이 없음)
5.3 CURTIME() vs CURRENT_TIME() (비교)
| Function | What it returns | Format | Notes |
|---|---|---|---|
| CURTIME() | Current time (hour/minute/second) | HH:MM:SS | MySQL-specific function |
| CURRENT_TIME() | Current time (hour/minute/second) | HH:MM:SS | SQL-standard function |
5.4 CURTIME() / CURRENT_TIME() 실용 예시
① 데이터 삽입 시 현재 시간 기록
INSERT INTO user_logs (event, event_time) VALUES ('Login', CURTIME());
② 필터링 (특정 시간 범위 내 데이터 조회)
SELECT * FROM logs WHERE TIME(created_at) BETWEEN '09:00:00' AND '18:00:00';
③ 정밀도 변경 (밀리초 포함)
SELECT CURTIME(3); -- Display up to 3 fractional digits
예시 출력
16:30:45.123
5.5 CURTIME() / CURRENT_TIME() 제한 사항 및 참고 사항
① 날짜 정보가 없으므로 필요 시 날짜와 결합하세요
SELECT CONCAT(CURDATE(), ' ', CURTIME()) AS full_datetime;
② DEFAULT 값으로 사용할 때
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
event_time TIME DEFAULT CURTIME()
);
5.6 CURTIME() / CURRENT_TIME()를 언제 사용해야 할까요?
| Use case | Recommended function |
|---|---|
| Need only the current time (hour/minute/second) | CURTIME() or CURRENT_TIME() |
| Need current date and time | NOW() |
| Need millisecond precision | CURTIME(3) |
📌 대부분의 경우, CURTIME() 또는 CURRENT_TIME() 중 하나를 사용하면 충분합니다.
읽기 쉬운 쪽을 선택하세요.
5.7 CURTIME() / CURRENT_TIME() 요약
CURTIME()는 MySQL 전용이며,CURRENT_TIME()는 SQL 표준입니다- 두 함수 모두 현재 시간(HH:MM:SS)을 반환합니다
- 포맷/정밀도를 조정하려면
CURTIME(3)또는DATE_FORMAT()을 사용하세요 - 날짜가 필요하면
CURDATE()와 결합하거나NOW()를 사용하세요 - 기본값으로는 일반적으로
CURRENT_TIMESTAMP를 사용합니다
📌 결론: 현재 시간만 필요하다면 CURTIME()가 좋은 선택입니다.
6. 현재 시간을 활용한 실용적인 쿼리 예시
MySQL에서 현재 시간을 가져오는 방법을 이해했으니, 이제 이를 실제로 활용하는 방법을 살펴보겠습니다.
이 섹션에서는 현재 시간을 활용한 실제 쿼리 예시를 소개합니다.
삽입, 업데이트, 검색 등 일상적인 데이터베이스 작업에 유용한 기술들을 배울 수 있습니다.
6.1 데이터를 삽입할 때 현재 시간 기록
① 사용자가 회원가입할 때 현재 시간 기록
INSERT INTO users (name, email, created_at)
VALUES ('Sato', 'sato@example.com', NOW());
6.2 데이터를 업데이트할 때 현재 시간 기록
② 사용자의 마지막 로그인 타임스탬프 기록
UPDATE users SET last_login = NOW() WHERE id = 1;
6.3 지난 N일간의 데이터 조회
③ 지난 7일간의 주문 데이터 조회
SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY;
6.4 특정 시간 범위 내에 생성된 데이터 조회
④ 오늘 9시부터 18시 사이에 생성된 데이터 조회
SELECT * FROM logs WHERE TIME(created_at) BETWEEN '09:00:00' AND '18:00:00';
6.5 시간대를 고려한 현재 시간 조회
⑤ UTC 시간을 일본 시간(JST)으로 변환
SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');
6.6 레코드 생성 시간을 기본적으로 현재 타임스탬프로 설정
⑥ created_at을 자동으로 현재 타임스탬프로 설정
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
event VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
6.7 일정 기간이 지난 데이터 삭제
⑦ 30일 이상 된 데이터 삭제
DELETE FROM logs WHERE created_at < NOW() - INTERVAL 30 DAY;
6.8 밀리초(마이크로초) 정밀도로 현재 시간 얻기
⑧ 밀리초 정밀도로 현재 타임스탬프 얻기
SELECT NOW(3);
예시 출력
2025-02-14 16:30:45.123
6.9 사용 사례 선택 가이드
| Use case | Recommended function | Example |
|---|---|---|
| Record the current time when inserting data | NOW() | INSERT INTO users (name, created_at) VALUES ('Sato', NOW()); |
| Record the current time when updating data | NOW() | UPDATE users SET last_login = NOW() WHERE id = 1; |
| Retrieve data from the past N days | NOW() - INTERVAL X DAY | SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY; |
| Retrieve data within a specific time range | CURTIME() | SELECT * FROM logs WHERE TIME(created_at) BETWEEN '09:00:00' AND '18:00:00'; |
| Convert UTC time to JST | CONVERT_TZ() | SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo'); |
| Delete old data (older than 30 days) | NOW() - INTERVAL X DAY | DELETE FROM logs WHERE created_at < NOW() - INTERVAL 30 DAY; |
6.10 요약
NOW()는 기본적인 현재 타임스탬프 조회를 처리합니다- 시간만 필요할 때
CURTIME()와CURRENT_TIME()이 유용합니다 - 현재 시간을 이용해 시간 창 쿼리, 시간대별 필터링, 밀리초 정밀도 타임스탬프 등을 수행할 수 있습니다
- 타임스탬프는 시간대에 따라 달라지므로
CONVERT_TZ()를 사용해 정확한 시간을 얻으세요 - 데이터베이스 용량 관리를 위해 오래된 데이터를 자동으로 삭제하는 메커니즘을 설계하는 것도 중요합니다
📌 결론: 현재 시간을 효과적으로 활용하면 MySQL에서 데이터를 보다 효율적으로 관리할 수 있습니다.
7. FAQ (자주 묻는 질문)
다음은 MySQL에서 현재 시간을 가져오는 방법에 대한 자주 묻는 질문(FAQ)입니다.
각 질문에 대해 명확하고 간결하게 답변합니다.
7.1 NOW()와 SYSDATE()의 차이점은 무엇인가요?
답변
NOW()와 SYSDATE() 모두 현재 날짜와 시간을 반환하지만, 값이 평가되는 시점이 다릅니다.
| Function | When it’s evaluated | Notes |
|---|---|---|
| NOW() | At query start | Returns a fixed timestamp for the statement |
| SYSDATE() | At execution time | Returns a different timestamp on each evaluation |
테스트 예시
SELECT NOW(), SLEEP(3), NOW();
SELECT SYSDATE(), SLEEP(3), SYSDATE();
예시 출력
NOW() | SLEEP(3) | NOW()
2025-02-14 16:30:45 | wait 3 seconds | 2025-02-14 16:30:45
SYSDATE() | SLEEP(3) | SYSDATE()
2025-02-14 16:30:45 | wait 3 seconds | 2025-02-14 16:30:48
🚨 트랜잭션 처리에서는 일반적으로 NOW()를 권장합니다.
7.2 CURRENT_TIMESTAMP()와 NOW()는 동일한가?
답변
그들은 거의 동일하게 동작하지만, CURRENT_TIMESTAMP()는 DEFAULT 값으로 사용할 수 있습니다.
테이블을 생성할 때 예시
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
7.3 특정 시간대에서 현재 시간을 어떻게 얻나요?
답변
SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');
7.4 현재 시간을 자동으로 기록하려면 어떻게 해야 하나요?
답변
테이블을 생성할 때 DEFAULT CURRENT_TIMESTAMP를 지정하면 created_at에 현재 시간이 자동으로 저장됩니다.
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
event VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
7.5 지난 N일의 데이터를 어떻게 조회하나요?
답변
SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY;
7.6 밀리초(마이크로초) 정밀도로 현재 시간을 어떻게 얻나요?
답변
SELECT NOW(3);
예시 출력
2025-02-14 16:30:45.123
7.7 요약
NOW()와SYSDATE()는 평가 시점이 다릅니다CURRENT_TIMESTAMP()는DEFAULT값으로 사용할 수 있습니다CONVERT_TZ()를 사용하여 다른 시간대의 타임스탬프를 조회하세요DEFAULT CURRENT_TIMESTAMP를 사용하여 생성 타임스탬프를 자동 기록하세요NOW() - INTERVAL X DAY를 사용하여 과거 X일의 데이터를 조회하세요NOW(3)또는NOW(6)은 밀리초/마이크로초 정밀도 타임스탬프를 지원합니다
📌 결론: 올바른 MySQL 시간 함수를 선택하는 것은 현재 타임스탬프를 다루는 데 필수적입니다.
8. 요약
이 글에서는 MySQL에서 현재 시간을 얻는 방법을 설명했습니다.
NOW() 함수에 초점을 맞추어 유사 함수들 간의 차이점, 실용적인 쿼리 예시, 그리고 중요한 주의사항을 다루었습니다.
8.1 현재 시간을 얻는 주요 MySQL 함수
| Function | What it returns | Format | Notes |
|---|---|---|---|
| NOW() | Current date and time | YYYY-MM-DD HH:MM:SS | Most common function |
| SYSDATE() | Date and time at execution | YYYY-MM-DD HH:MM:SS | Can return different values on each evaluation |
| CURTIME() | Current time | HH:MM:SS | Time only (no date) |
| CURRENT_TIME() | Current time | HH:MM:SS | Same as CURTIME() |
| CURRENT_TIMESTAMP() | Current date and time | YYYY-MM-DD HH:MM:SS | Almost the same as NOW() |
| UTC_TIMESTAMP() | Current UTC date and time | YYYY-MM-DD HH:MM:SS | Time zone fixed to UTC |
📌 결론:
- 일반적인 현재 타임스탬프 조회에는 보통
NOW()가 가장 좋습니다. - 정확한 실행 시간이 필요하면
SYSDATE()를 사용하세요. - 시간만 필요하고(날짜는 제외)
CURTIME()을 선택하세요.
8.2 현재 시간을 활용한 실용적인 쿼리
삽입 시 현재 시간을 기록하기
INSERT INTO users (name, created_at) VALUES ('Sato', NOW());
업데이트 시 현재 시간을 기록하기
UPDATE users SET last_login = NOW() WHERE id = 1;
지난 7일의 데이터 조회
SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY;
시간대를 고려한 시간 조회
SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');
오래된 데이터 삭제 (30일 이상)
DELETE FROM logs WHERE created_at < NOW() - INTERVAL 30 DAY;
8.3 시간대에 관한 참고 사항
- MySQL
NOW()는 기본 시간대 설정에 따라 달라지므로 환경에 따라 결과가 다를 수 있습니다. - 다른 시간대의 타임스탬프를 조회하려면
CONVERT_TZ()를 사용하세요. - 서버 시간대를 변경하려면:
SET GLOBAL time_zone = 'Asia/Tokyo';
8.4 MySQL 현재 시간 함수 FAQ
Q1. NOW()와 SYSDATE()의 차이점은 무엇인가요?
➡ NOW()는 쿼리 시작 시점의 시간을 조회하고, SYSDATE()는 실행 시점의 시간을 조회합니다.
Q2. CURRENT_TIMESTAMP()와 NOW()는 동일한가요?
➡ 이들은 거의 동일하지만, CURRENT_TIMESTAMP()는 DEFAULT 값으로 사용할 수 있습니다.
Q3. 밀리초(마이크로초) 정밀도로 현재 시간을 어떻게 얻나요?
➡ NOW(3)(밀리초) 또는 NOW(6)(마이크로초)를 사용하세요.
SELECT NOW(3); -- Example: 2025-02-14 16:30:45.123
8.5 요약
- MySQL에서 현재 시간을 위한 올바른 함수를 선택하는 것이 중요합니다 .
- 일반적인 경우에는
NOW()를 사용하고, 정확한 실행 타임스탬프가 필요할 때는SYSDATE()를 사용하세요 . - 시간만 필요할 때는
CURTIME()를 사용하고, 시간대 변환에는CONVERT_TZ()를 사용합니다 . - 삽입, 업데이트, 검색, 삭제 전반에 걸쳐 현재 시간을 사용할 수 있습니다 .
📌 결론: MySQL 시간 함수를 마스터하여 데이터를 보다 효율적으로 관리하세요.


