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

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

MySQL에서 MM/YY 형식으로 저장된 문자열(예: 카드 유효기간 같은 월/연도 데이터)을 YYYY-MM-DD 형식의 날짜로 변환하려면 str_to_date() 함수를 사용하면 됩니다. 이 함수는 지정한 형식 문자열에 따라 텍스트를 DATE 값으로 해석해 줍니다.

1. 테이블 생성하기

먼저 실습에 사용할 테이블을 생성하고 날짜 데이터를 담을 컬럼을 준비합니다.

mysql> create table demo72
    -> (
    -> due_date varchar(40)
    -> );
Query OK, 0 rows affected (2.96 sec)

2. 샘플 데이터 삽입하기

insert 명령을 사용하여 MM/YY 형식의 레코드를 몇 개 입력합니다.

mysql> insert into demo72 values("11/15");
Query OK, 1 row affected (0.26 sec)

mysql> insert into demo72 values("02/20");
Query OK, 1 row affected (0.09 sec)

mysql> insert into demo72 values("07/95");
Query OK, 1 row affected (0.15 sec)

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

select 문으로 테이블에 저장된 레코드를 조회해 보겠습니다.

mysql> select *from demo72;

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

+----------+
| due_date |
+----------+
| 11/15    |
| 02/20    |
| 07/95    |
+----------+
3 rows in set (0.00 sec)

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

다음은 str_to_date()concat()을 조합하여 MM/YY 값을 YYYY-MM-DD 형식으로 변환하는 쿼리입니다.

mysql> select str_to_date(concat('10/', due_date), '%d/%m/%y') as original_date
-> from demo72;

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

+---------------+
| original_date |
+---------------+
| 2015-11-10    |
| 2020-02-10    |
| 1995-07-10    |
+---------------+
3 rows in set (0.00 sec)

동작 원리 이해하기

쿼리가 어떻게 작동하는지 단계별로 살펴보겠습니다.

  • concat('10/', due_date): 원본 값 앞에 임의의 일(day) 값인 '10/'을 붙여 '10/11/15'처럼 완전한 날짜 문자열을 만듭니다.
  • '%d/%m/%y': 형식 지정자입니다. %d는 일, %m은 월, %y는 두 자리 연도를 의미합니다.

즉, '10/11/15'는 일=10, 월=11, 연도=15로 해석되어 최종적으로 2015-11-10이 출력됩니다.

두 자리 연도 처리 규칙

%y 형식 지정자는 두 자리 연도를 다음 규칙에 따라 해석합니다.

  • 00~69: 2000년대로 변환 (예: '15' → 2015, '20' → 2020)
  • 70~99: 1900년대로 변환 (예: '95' → 1995)

그래서 '07/95'가 1995-07-10으로 올바르게 변환된 것입니다.

참고: 일(day)을 붙이는 이유

만약 str_to_date(due_date, '%m/%y')처럼 일 없이 바로 변환하면 빠진 일 부분이 0으로 채워져 '2015-11-00' 같은 불완전한 날짜가 반환될 수 있습니다. 임의의 일 값을 앞에 붙여주면 항상 유효한 완전한 날짜를 얻을 수 있습니다.