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

MySQL 쿼리에서 YYYYMMDD 날짜를 YY-MM-DD 형식으로 변환하는 방법

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

MySQL에서 YYYYMMDD 형태로 저장된 날짜 문자열을 하이픈이 포함된 날짜 형식으로 변환하려면 STR_TO_DATE()DATE_FORMAT() 함수를 조합하여 사용하면 됩니다.

기본 문법은 다음과 같습니다.

select date_format(str_to_date(yourColumnName, '%Y%m%d'),'%Y-%m-%d') from yourTableName;

여기서 STR_TO_DATE()는 '20121221'처럼 저장된 문자열을 %Y%m%d 포맷 기준으로 해석해 날짜(DATE) 값으로 변환하고, DATE_FORMAT()은 그 날짜를 원하는 출력 형식으로 다시 포맷팅하는 역할을 합니다.

참고로 %Y-%m-%d는 연도를 네 자리(예: 2012-12-21)로 출력합니다. 만약 두 자리 연도(예: 12-12-21) 형식이 필요하다면 포맷 문자열을 %y-%m-%d로 바꾸면 됩니다.

1단계: 테이블 생성

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
(
    ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ClientProjectDeadline varchar(200)
);
Query OK, 0 rows affected (0.57 sec)

ClientProjectDeadline 컬럼은 varchar 타입으로, 날짜가 YYYYMMDD 형태의 문자열로 저장됩니다.

2단계: 데이터 삽입

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

mysql> insert into DemoTable(ClientProjectDeadline) values('20121221');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable(ClientProjectDeadline) values('20190416');
Query OK, 1 row affected (0.53 sec)
mysql> insert into DemoTable(ClientProjectDeadline) values('20160624');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable(ClientProjectDeadline) values('20170131');
Query OK, 1 row affected (0.20 sec)

3단계: 저장된 데이터 확인

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

mysql> select *from DemoTable;

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

+----------+-----------------------+
| ClientId | ClientProjectDeadline |
+----------+-----------------------+
| 1        | 20121221              |
| 2        | 20190416              |
| 3        | 20160624              |
| 4        | 20170131              |
+----------+-----------------------+
4 rows in set (0.00 sec)

4단계: 날짜 형식 변환 쿼리 실행

이제 YYYYMMDD 형식의 날짜를 YYYY-MM-DD 형식으로 변환하는 쿼리입니다.

mysql> select date_format(str_to_date(ClientProjectDeadline, '%Y%m%d'),'%Y-%m-%d') from DemoTable;

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

+----------------------------------------------------------------------+
| date_format(str_to_date(ClientProjectDeadline, '%Y%m%d'),'%Y-%m-%d') |
+----------------------------------------------------------------------+
| 2012-12-21                                                           |
| 2019-04-16                                                           |
| 2016-06-24                                                           |
| 2017-01-31                                                           |
+----------------------------------------------------------------------+
4 rows in set (0.05 sec)

마무리

이처럼 MySQL에서는 STR_TO_DATE()로 문자열을 날짜 값으로 변환한 뒤 DATE_FORMAT()으로 원하는 형식으로 출력하는 방식으로 날짜 포맷을 손쉽게 변경할 수 있습니다. 두 자리 연도 형식(YY-MM-DD)이 필요하다면 포맷 문자열만 '%y-%m-%d'로 바꿔주면 됩니다.