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

MySQL에서 'Jan 2017', 'May 2018' 형태의 문자열을 날짜로 변환하는 방법

MySQL에서 'Jan 2017', 'May 2018'처럼 축약된 월 이름과 연도로 구성된 문자열을 실제 날짜 값으로 변환하려면 STR_TO_DATE() 함수와 DATE_FORMAT() 함수를 함께 사용하면 됩니다.

1. 예제 테이블 생성

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

mysql> create table DemoTable1985
    (
    DueDate varchar(20)
    );
Query OK, 0 rows affected (0.00 sec)

2. 샘플 데이터 삽입

insert 명령을 사용하여 테이블에 레코드를 추가합니다.

mysql> insert into DemoTable1985 values('Jan 2017');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1985 values('May 2018');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1985 values('Aug 2015');
Query OK, 1 row affected (0.00 sec)

3. 데이터 확인

select 문으로 테이블에 저장된 모든 레코드를 조회합니다.

mysql> select * from DemoTable1985;

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

+----------+
| DueDate  |
+----------+
| Jan 2017 |
| May 2018 |
| Aug 2015 |
+----------+
3 rows in set (0.00 sec)

4. 날짜 형식 변환 쿼리

다음은 'Jan 2017' 형태의 문자열을 'YYYY-MM-DD' 날짜 형식으로 변환하는 쿼리입니다.

mysql> select date_format(str_to_date(DueDate,'%b %Y'), '%Y-%m-01') as Result from DemoTable1985;

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

+------------+
| Result     |
+------------+
| 2017-01-01 |
| 2018-05-01 |
| 2015-08-01 |
+------------+
3 rows in set (0.00 sec)

형식 지정자 설명

위 쿼리에서 사용된 주요 형식 지정자는 다음과 같습니다.

  • %b: 축약된 월 이름(Jan, May, Aug 등)을 나타냅니다.
  • %Y: 4자리 연도(2017, 2018 등)를 나타냅니다.
  • %m: 두 자리 숫자 형태의 월(01~12)을 나타냅니다.

STR_TO_DATE()가 'Jan 2017' 같은 문자열을 내부적으로 날짜 값으로 파싱한 뒤, DATE_FORMAT()에서 일(day) 부분을 '01'로 고정하여 해당 월의 첫째 날짜를 반환합니다. 원본 데이터에 일자 정보가 없기 때문에 이렇게 특정 일자를 지정하는 방식이 가장 안전하고 일관된 결과를 제공합니다.