손질 날짜와 시간 MySQL의 데이터는 특히 타임스탬프 작업 예약 또는 시간 기반 생성 처리와 관련하여 많은 데이터베이스 작업에 필수적입니다. MySQL은 사용자가 날짜 값을 사용하여 계산을 수행하고 필요에 따라 형식을 지정하는 데 도움이 되는 다양한 날짜 및 시간 함수를 제공합니다.
이러한 기능을 통해 개발자는 계산을 수행하여 날짜의 특정 부분을 추출하거나 더 나은 가독성을 위해 출력 형식을 지정할 수도 있습니다. 이 기사에서는 가장 일반적으로 사용되는 MySQL 날짜 함수를 탐색하고 해당 구문을 설명하며 예제를 제공하고 이를 효과적으로 사용하는 방법을 안내합니다.
MySQL 날짜 및 시간 데이터 유형 이해
MySQL에서 날짜 작업을 할 때 특히 데이터베이스의 날짜 형식이 삽입 중 입력 데이터 형식과 일치해야 하기 때문에 초보자에게는 까다로울 수 있습니다. 많은 경우 단순한 날짜를 사용하는 대신 사용 사례에 따라 날짜와 시간을 모두 저장해야 할 수도 있습니다. 이곳은 DATETIME 그리고 TIMESTAMP 데이터 유형이 작동합니다.
MySQL은 날짜 및 시간 값을 저장하기 위해 다음과 같은 데이터 유형을 제공합니다.
1. 날짜 :
- 체재 :
YYYY-MM-DD - 시간 구성요소 없이 날짜(년월일)만 저장하는 데 사용됩니다.
2. 날짜/시간 :
- 체재 :
YYYY-MM-DD HH:MM:SS - 날짜와 시간을 모두 저장하므로 날짜와 함께 특정 시간을 캡처해야 할 때 유용합니다.
3. 타임스탬프 :
- 체재 :
YYYY-MM-DD HH:MM:SS - 유사하다
DATETIME하지만TIMESTAMP시간대 지원도 포함됩니다. 레코드가 수정되면 현재 타임스탬프로 자동으로 업데이트되므로 시간 경과에 따른 레코드 변경 사항을 추적하는 데 이상적입니다.
4. 년도 :
- 체재 :
YYYY또는YY - 출생 연도 또는 회계 연도 추적과 같이 연도만 필요한 애플리케이션에 유용할 수 있는 연도만 저장하는 데 사용됩니다.
MySQL 날짜 및 시간 함수
이제 날짜 및 시간 데이터를 효과적으로 조작하고 쿼리하는 데 사용할 수 있는 MySQL 날짜 함수에 대해 자세히 살펴보겠습니다.
1. NOW()- 현재 날짜 및 시간 가져오기
그만큼 지금() 함수는 현재 날짜와 시간을 검색합니다. YYYY-MM-DD HH:MI:SS 체재.
질문:
SELECT NOW();
산출:

2. CURDATE() - 현재 날짜만 가져오기
시간 부분 없이 현재 날짜만 필요한 경우 다음을 사용할 수 있습니다. CURDATE() 날짜를 반환합니다. YYYY-MM-DD 체재.
질문:
SELECT CURDATE();
산출:

3. CURTIME() - 현재 시간만 가져오기
CURTIME() 함수는 현재 시간을 반환합니다. HH:MI:SS 날짜를 제외한 형식입니다.
질문:
자바 문자열 형식화
SELECT CURTIME();
산출:

4. DATE() - DATETIME 값에서 날짜 부분 추출
그만큼DATE()함수는 날짜 부분만 추출합니다.DATETIME또는TIMESTAMP시간을 버리는 가치.
예: 라는 테이블의 경우 users :
| ID | 이름 | 출생시간 |
|---|---|---|
| 4120 | 관행 | 1996-09-26 16:44:15.581 |
질문:
SELECT Name DATE(BirthTime)
AS BirthDate FROM Test;
산출:
| 이름 | 생년월일 |
|---|---|
| 관행 | 1996-09-26 |
5. EXTRACT() - 특정 날짜 부분 추출
EXTRACT()일, 월 또는 연도와 같은 날짜의 특정 부분을 추출하는 데 사용됩니다. 이 기능은 날짜의 여러 부분을 분석하거나 비교할 때 특히 유용할 수 있습니다. 여러 단위를 고려할 수 있지만 다음과 같은 일부만 사용됩니다. MICROSECOND 초분 시간 일 주 월 분기 연도 등 그리고 '날짜'는 유효한 날짜 표현입니다.
통사론:
바이트를 문자열 파이썬으로
EXTRACT(단위 FROM 날짜);
일 추출 쿼리:
SELECT Name Extract(DAY FROM
BirthTime) AS BirthDay FROM Test;
산출:
| 이름 | 생일 |
|---|---|
| 관행 | 26 |
연도 추출 쿼리:
SELECT Name Extract(YEAR FROM BirthTime)
AS BirthYear FROM Test;
산출:
| 이름 | 출생연도 |
|---|---|
| 관행 | 1996년 |
초 추출 쿼리:
SELECT Name Extract(SECOND FROM
BirthTime) AS BirthSecond FROM Test;
산출:
| 이름 | 출생두 번째 |
|---|---|
| 관행 | 581 |
6. DATE_ADD() - 날짜에 간격 추가
그만큼 DATE_ADD() 기능을 사용하면 날짜 또는 날짜에 시간 간격(예: 일 월 년)을 추가할 수 있습니다.DATETIME값.
통사론:
DATE_ADD(날짜 INTERVAL 표현식 유형);
예: 아래 테이블의 경우 ' 시험 '
| ID | 이름 | 출생시간 |
|---|---|---|
| 4120 | 관행 | 1996-09-26 16:44:15.581 |
쿼리 대상 날짜에 1년 추가
SELECT Name DATE_ADD(BirthTime INTERVAL
1 YEAR) AS BirthTimeModified FROM Test;
산출:
| 이름 | 출생 시간 수정됨 |
|---|---|
| 관행 | 1997-09-26 16:44:15.581 |
날짜에 30일을 추가하는 쿼리
SELECT Name DATE_ADD(BirthTime
INTERVAL 30 DAY) AS BirthDayModified FROM Test;
산출:
| 이름 | 생일 수정됨 |
|---|---|
| 관행 | 1996-10-26 16:44:15.581 |
날짜에 4시간을 추가하는 쿼리
SELECT Name DATE_ADD(BirthTime INTERVAL
4 HOUR) AS BirthHourModified FROM Test;
산출:
| 이름 | 출생두 번째 |
|---|---|
| 관행 | 1996-10-26 20:44:15.581 |
7. 날짜표() – 두 날짜의 차이점 찾기
이 함수는 두 날짜 사이의 일수를 반환합니다.
통사론:
DATEDIFF(간격1 날짜2);
간격 - 분/시/월/년 등
date1 & date2 - 날짜/시간 표현
쿼리 대상 두 날짜의 차이 찾기
SELECT DATEDIFF(day '2017-01-13' '2017-01-03') AS DateDiff;
산출:
| 날짜 차이 |
|---|
8. DATE_FORMAT() - 날짜 및 시간 형식 지정
DATE_FORMAT()을 사용하면 형식을 지정할 수 있습니다. 날짜 날짜/시간 또는 타임스탬프 자리 표시자를 사용하여 값을 사용자 정의 형식으로 변환합니다.
통사론:
DATE_FORMAT(날짜형식);
날짜는 유효한 날짜이고 형식은 날짜/시간에 대한 출력 형식을 지정합니다. 사용할 수 있는 형식은 다음과 같습니다.
- %a - 축약된 요일 이름(일~토)
- %b-약식 월 이름(Jan-Dec)
- %c-월 숫자(0-12)
- %D-영어 접미사 포함 월(0th 1st 2nd 3rd)
- %d-월의 날짜 숫자(00-31)
- %e-월중 숫자(0-31)
- %f-마이크로초(000000-999999)
- %H시간(00-23)
- %h-시간(01-12)
- %I-시간(01-12)
- %i-분 숫자(00-59)
- %j-연도의 날(001-366)
- %k시간(0-23)
- %l-시간(1-12)
- %M-월 이름(1월~12월)
- %m-월 숫자(00-12)
- %p-AM 또는 PM
- %r-Time 12시간(hh:mm: ss 뒤에 AM 또는 PM이 옴)
- %S-초(00-59)
- %s-초(00-59)
- %T-Time 24시간(hh:mm:ss)
- %U-Week(00-53) 여기서 일요일은 주의 첫 번째 날입니다.
- %u-Week(00-53) 여기서 월요일은 주의 첫 번째 날입니다.
- %V-Week(01-53) 여기서 일요일은 %X와 함께 사용되는 주의 첫 번째 날입니다.
- %v-Week(01-53) 여기서 월요일은 %x와 함께 사용되는 주의 첫 번째 날입니다.
- %W-요일 이름(일요일~토요일)
- %w-요일(0=일요일 6=토요일)
- 일요일이 주의 첫날인 주의 %X-연도 %V와 함께 사용되는 4자리 숫자
- 월요일이 주의 첫 번째 날인 주의 %x-연도 %v와 함께 사용되는 4자리 숫자
- %Y-연도 숫자 4자리
- %y-연도 숫자 두 자리
날짜 형식을 지정하는 쿼리
SELECT DATE_FORMAT('2025-04-10 12:34:56' '%W %M %d %Y') AS formatted_date;산출:
SQL 데이터 유형
| 형식화된_날짜 |
|---|
| 2025년 4월 10일 목요일 |
MySQL에서 날짜 및 시간 작업에 대한 모범 사례
1. 항상 적절한 날짜 형식을 사용하세요
날짜를 삽입하거나 업데이트할 때 MySQL의 예상 형식(YYYY-MM-DD YYYY-MM-DD HH:MI:SS). 이렇게 하면 쿼리가 오류 없이 예상된 결과를 반환할 수 있습니다.
2. TIMESTAMP 관련 시간대 고려 사항
하는 동안DATETIME시간대 정보를 저장하지 않습니다TIMESTAMP하다. 애플리케이션이 시간대에 민감한 경우(예: 국제 애플리케이션) 사용을 고려하세요.TIMESTAMP다양한 시간대를 고려해야 하는 날짜-시간 필드의 경우.
3. 쿼리의 날짜 범위 처리
날짜 범위를 기준으로 데이터를 필터링하려면(예: 특정 월 또는 연도의 모든 기록 검색)WHERE절. 예:
SELECT * FROM orders
WHERE order_date BETWEEN '2025-01-01' AND '2025-01-31';
4. 성능 고려 사항
특히 대규모 데이터세트에서 날짜 및 시간 함수로 작업할 때 성능에 미치는 영향에 유의하세요. 다음과 같은 기능을 사용하지 마십시오.NOW()또는CURDATE()에서WHERE큰 테이블을 처리할 때 쿼리 속도가 느려질 수 있기 때문입니다.
결론
MySQL의 날짜 및 시간 함수 위한 필수 도구입니다. 손질 그리고 조작하다 데이터베이스 내의 시간 데이터. 다음과 같은 기능을 마스터함으로써NOW() CURDATE() DATE_ADD() DATEDIFF()그리고DATE_FORMAT()당신은 쉽게 작업할 수 있습니다 시간 기반 계산 비교 그리고 형식 . 이러한 함수를 효과적으로 사용하기 위한 핵심은 해당 구문을 언제, 어떻게 사용하는지, 그리고 대규모 데이터 세트에서 성능에 미치는 영향을 이해하는 것입니다. 이러한 지식을 통해 MySQL에서 모든 날짜 및 시간 관련 요구 사항에 대해 보다 효율적이고 정확하며 확장 가능한 쿼리를 구축할 수 있습니다.