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

MySQL에서 MM/YY 형식 날짜를 YYYY-MM-DD로 변환하는 방법

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

MySQL에서 '09/18'처럼 월/연도(MM/YY)만 저장된 문자열을 '2018-09-24'와 같은 완전한 날짜 형식(YYYY-MM-DD)으로 변환해야 하는 경우가 있습니다. 이럴 때는 STR_TO_DATE() 함수를 사용하면 간단하게 해결할 수 있습니다.

핵심 아이디어는 일(day)에 해당하는 값이 없기 때문에, CONCAT() 함수를 이용해 원하는 일자를 문자열 뒤에 붙여준 뒤 날짜로 변환하는 것입니다.

SELECT STR_TO_DATE(CONCAT('일자값/', 컬럼명), '%d/%m/%y') AS 별칭
FROM 테이블명;

형식 지정자 '%d/%m/%y'는 입력 문자열이 '일/월/연도(두 자리)' 순서로 구성되어 있음을 의미합니다.

1. 예제 테이블 생성

먼저 실습용 테이블을 만들어 보겠습니다.

mysql> CREATE TABLE demo46 (
    ->   id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ->   short_date VARCHAR(20)
    -> );
Query OK, 0 rows affected (0.60 sec)

2. 샘플 데이터 삽입

INSERT 문을 사용해 MM/YY 형식의 날짜 데이터를 몇 개 넣어 보겠습니다.

mysql> INSERT INTO demo46(short_date) VALUES('09/18');
Query OK, 1 row affected (0.08 sec)

mysql> INSERT INTO demo46(short_date) VALUES('12/20');
Query OK, 1 row affected (0.12 sec)

mysql> INSERT INTO demo46(short_date) VALUES('11/20');
Query OK, 1 row affected (0.20 sec)

3. 저장된 데이터 확인

SELECT 문으로 테이블의 내용을 조회합니다.

mysql> SELECT * FROM demo46;

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

+----+------------+
| id | short_date |
+----+------------+
|  1 | 09/18      |
|  2 | 12/20      |
|  3 | 11/20      |
+----+------------+
3 rows in set (0.00 sec)

4. MM/YY를 YYYY-MM-DD로 변환하는 쿼리

이제 실제 변환 쿼리입니다. 여기서는 일자를 '24'로 지정하여 앞에 연결한 후 변환했습니다.

mysql> SELECT STR_TO_DATE(CONCAT('24/', short_date), '%d/%m/%y') AS Convert_In_Full_Date
    -> FROM demo46;

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

+----------------------+
| Convert_In_Full_Date |
+----------------------+
| 2018-09-24           |
| 2020-12-24           |
| 2020-11-24           |
+----------------------+
3 rows in set (0.00 sec)

정리

'09/18'은 %m/%y 형식 해석에 따라 2018년 9월로 변환되고, '12/20'은 2020년 12월로 변환된 것을 확인할 수 있습니다. 두 자리 연도(%y)는 MySQL이 자동으로 적절한 세기를 판단하여 처리해 주므로 별도의 가공 없이 편리하게 사용할 수 있습니다.

이 방법은 유효기간, 만료일 등 월과 연도 정보만 있는 데이터를 정렬하거나 날짜 연산에 활용해야 할 때 특히 유용합니다. 다만 일자 값은 임의로 지정되는 것이므로, 업무 로직에 맞게 적절한 기본값(예: 해당 월의 첫날 또는 마지막 날)을 선택하는 것이 좋습니다.