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

MySQL 날짜 형식 지정 후 년-월-일(YYYY-MM-DD)로 변환하는 방법

MySQL에서 문자열로 저장된 날짜 데이터를 년-월-일(YYYY-MM-DD) 형식으로 변환하려면 STR_TO_DATE() 함수와 DATE_FORMAT() 함수를 함께 사용하면 됩니다. 이 글에서는 실제 예제를 통해 변환 과정을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 날짜 문자열을 저장할 테이블을 생성합니다. 여기서는 날짜가 varchar 타입으로 저장되어 있다고 가정합니다.

mysql> create table DemoTable666(AdmissionDate varchar(200));
Query OK, 0 rows affected (0.57 sec)

2. 샘플 데이터 삽입하기

INSERT 명령을 사용하여 다양한 형식의 날짜 문자열을 테이블에 입력합니다.

mysql> insert into DemoTable666 values('Sat,20 Jul 2019 04:29:35');
Query OK, 1 row affected (1.12 sec)
mysql> insert into DemoTable666 values('Fri,02 Oct 2018 12:19:15');
Query OK, 1 row affected (1.05 sec)
mysql> insert into DemoTable666 values('Sun,01 Aug 2016 11:10:05');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable666 values('Fri, 06 Nov 2015 04:06:05 -0500');
Query OK, 1 row affected (0.24 sec)

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

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

mysql> select *from DemoTable666;

위 쿼리는 다음과 같은 결과를 출력합니다.

+---------------------------------+
| AdmissionDate                   |
+---------------------------------+
| Sat,20 Jul 2019 04:29:35        |
| Fri,02 Oct 2018 12:19:15        |
| Sun,01 Aug 2016 11:10:05        |
| Fri, 06 Nov 2015 04:06:05 -0500 |
+---------------------------------+
4 rows in set (0.00 sec)

4. 년-월-일 형식으로 변환하기

날짜 형식을 변환하는 핵심 쿼리는 다음과 같습니다.

mysql> select DATE_FORMAT(STR_TO_DATE(AdmissionDate, '%a, %d %b %Y %H:%i:%S'),'%Y-%m-%d %H:%i:%s') AS MyDate from DemoTable666;

실행 결과는 아래와 같습니다.

+---------------------+
| MyDate              |
+---------------------+
| 2019-07-20 04:29:35 |
| 2018-10-02 12:19:15 |
| 2016-08-01 11:10:05 |
| 2015-11-06 04:06:05 |
+---------------------+
4 rows in set, 1 warning (0.00 sec)

형식 지정자 설명

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

  • %a — 요일 약어 (Sat, Fri, Sun 등)
  • %d — 일 (01~31)
  • %b — 월 이름 약어 (Jul, Oct, Aug 등)
  • %Y — 4자리 연도
  • %H — 시간 (00~23)
  • %i — 분 (00~59)
  • %S — 초 (00~59)

즉, STR_TO_DATE()가 'Sat,20 Jul 2019 04:29:35' 같은 문자열을 MySQL이 인식할 수 있는 날짜 값으로 파싱하고, DATE_FORMAT()이 그 값을 '%Y-%m-%d %H:%i:%s' 패턴에 맞춰 최종적으로 2019-07-20 04:29:35 형태로 출력해 줍니다.

참고로 네 번째 레코드처럼 타임존 정보(-0500)가 포함된 경우 경고(warning)가 발생할 수 있지만, 날짜와 시간 부분은 정상적으로 변환됩니다. 만약 타임존까지 완벽하게 처리해야 한다면 입력 문자열에서 타임존 부분을 제거하거나 별도로 처리하는 것이 좋습니다.