Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL DATE_FORMAT()과 STR_TO_DATE() 함수로 날짜 형식 변환하기

MySQL에서는 문자열로 저장된 날짜 데이터를 STR_TO_DATE() 함수로 파싱한 뒤, DATE_FORMAT() 함수를 사용해 원하는 형식으로 손쉽게 변환할 수 있습니다. 이 글에서는 'August 04,2019'처럼 텍스트로 저장된 날짜 값을 '2019-08-04' 형식의 표준 날짜로 바꾸는 과정을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 날짜 문자열을 저장할 테이블을 생성합니다.

mysql> create table DemoTable
(
    DueDate varchar(100)
);
Query OK, 0 rows affected (0.62 sec)

DemoTable에는 DueDate라는 varchar(100) 타입의 컬럼 하나가 정의되어 있습니다.

2. 샘플 데이터 삽입하기

INSERT 명령어를 사용해 날짜 형식의 문자열 데이터를 입력합니다.

mysql> insert into DemoTable values('August 04,2019');
Query OK, 1 row affected (0.25 sec)

3. 저장된 데이터 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

실행 결과는 다음과 같습니다.

+----------------+
| DueDate        |
+----------------+
| August 04,2019 |
+----------------+
1 row in set (0.00 sec)

4. STR_TO_DATE()와 DATE_FORMAT()으로 날짜 형식 변환

이제 핵심 쿼리입니다. STR_TO_DATE()는 '%M %d,%Y' 포맷 지정자를 사용해 'August 04,2019' 문자열을 날짜 값으로 해석하고, 이어서 DATE_FORMAT()이 그 결과를 '%Y-%m-%d' 형식, 즉 'YYYY-MM-DD' 형태로 변환합니다.

mysql> set @stringToDate=(select date_format(str_to_date(DueDate, '%M %d,%Y'), '%Y-%m-%d') from DemoTable);
Query OK, 0 rows affected (0.02 sec)

변환된 결과를 사용자 변수 @stringToDate에 담았습니다.

5. 변환 결과 확인하기

SELECT 문으로 변수에 저장된 날짜를 출력합니다.

mysql> select @stringToDate;

실행 결과는 다음과 같습니다.

+---------------+
| @stringToDate |
+---------------+
| 2019-08-04    |
+---------------+
1 row in set (0.00 sec)

주요 포맷 지정자 정리

  • %M: 월 이름 전체 (예: August)
  • %d: 일(날짜), 두 자리 숫자 (예: 04)
  • %Y: 네 자리 연도 (예: 2019)
  • %m: 두 자리 숫자 월 (예: 08)

이처럼 STR_TO_DATE()와 DATE_FORMAT()을 조합하면 다양한 형식의 날짜 문자열을 원하는 표준 형식으로 자유롭게 변환할 수 있으며, DATE 또는 DATETIME 타입 컬럼에 데이터를 정리할 때 특히 유용합니다.