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

MySQL DATE_FORMAT에서 짧은 월 이름 표시하기 – %M 대신 %b를 사용해야 하는 이유

%M과 %b의 차이점

MySQL의 %M 형식 지정자는 'January', 'February'처럼 월의 전체 영문 이름을 출력할 때 사용됩니다. 따라서 'Jan', 'Feb'처럼 축약된 짧은 월 이름을 표시하려면 %M이 아닌 %b 형식 지정자를 DATE_FORMAT() 함수와 함께 사용해야 합니다.

두 형식 지정자의 차이를 간단히 정리하면 다음과 같습니다.

  • %M : 월의 전체 영문 이름 출력 → 예) May, November, December
  • %b : 월의 축약된 영문 이름 출력 → 예) May, Nov, Dec

참고로 월 이름은 MySQL의 lc_time_names 시스템 변수에 설정된 로케일에 따라 달라질 수 있습니다. 기본값인 'en_US'에서는 영문 이름이 출력됩니다.

기본 문법

짧은 월 이름을 포함한 날짜 형식을 만드는 기본 문법은 다음과 같습니다.

SELECT DATE_FORMAT(yourColumnName, '%d-%b-%y') AS anyVariableName FROM yourTableName;

실습용 테이블 생성하기

위 문법을 직접 확인해 보기 위해 먼저 배송 날짜를 저장할 테이블을 생성해 보겠습니다.

mysql> create table DateFormatMonthDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> ShippingDate date,
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.63 sec)

샘플 데이터 삽입

INSERT 명령으로 여러 건의 배송 날짜 데이터를 입력합니다.

mysql> insert into DateFormatMonthDemo(ShippingDate) values('2019-05-21');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DateFormatMonthDemo(ShippingDate) values('2015-05-23');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DateFormatMonthDemo(ShippingDate) values('2019-11-01');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DateFormatMonthDemo(ShippingDate) values('2017-12-24');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DateFormatMonthDemo(ShippingDate) values('2016-01-13');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DateFormatMonthDemo(ShippingDate) values('2015-02-22');
Query OK, 1 row affected (0.19 sec)

저장된 데이터 조회

SELECT 문으로 테이블에 저장된 모든 레코드를 확인해 보겠습니다.

mysql> select *from DateFormatMonthDemo;
+----+--------------+
| Id | ShippingDate |
+----+--------------+
| 1 | 2019-05-21 |
| 2 | 2015-05-23 |
| 3 | 2019-11-01 |
| 4 | 2017-12-24 |
| 5 | 2016-01-13 |
| 6 | 2015-02-22 |
+----+--------------+
6 rows in set (0.00 sec)

%b로 짧은 월 이름 출력하기

이제 %d-%b-%y 형식을 적용하여 '일-월(축약)-연도' 형태로 날짜를 표시하는 쿼리입니다.

mysql> select DATE_FORMAT(ShippingDate, '%d-%b-%y') AS DateDemo from DateFormatMonthDemo;

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

+-----------+
| DateDemo |
+-----------+
| 21-May-19 |
| 23-May-15 |
| 01-Nov-19 |
| 24-Dec-17 |
| 13-Jan-16 |
| 22-Feb-15 |
+-----------+
6 rows in set (0.04 sec)

결과에서 볼 수 있듯이 %b를 사용하면 'May', 'Nov', 'Dec', 'Jan', 'Feb'처럼 축약된 월 이름이 정상적으로 출력됩니다. 만약 이 자리에 %M을 사용했다면 'May', 'November', 'December'처럼 전체 월 이름이 표시되었을 것입니다.

정리

MySQL에서 날짜를 원하는 형식으로 변환할 때는 상황에 맞는 형식 지정자를 선택하는 것이 중요합니다. 화면 공간이 제한적이거나 간결한 표기가 필요하다면 %b(짧은 월 이름), 완전한 월 이름이 필요하다면 %M(전체 월 이름)을 사용하세요. 이 외에도 %d(일), %y(두 자리 연도), %Y(네 자리 연도) 등 다양한 지정자를 조합하면 업무 요구 사항에 맞는 날짜 형식을 손쉽게 만들 수 있습니다.