DataBase

[MYSQL] DATE_FORMAT, CONCAT 메서드

Y0un9Ki 2024. 4. 15. 00:00
728x90
반응형

오늘은 sql 코딩 테스트를 풀면서 새로 알게 된 것을 적어보려고 한다.

 

일단 알아볼 것은 날짜의 형태를 변경하는 DATE_FORMAT과 글자를 합칠 수 있는 concat 메서드이다.


 

DATE_FORMAT

 

DATE_FORMAT 부터 보자.

 

MYSQL에서는 DATETIME을 YYYY-MM-DD hh:mm:ss의 형식으로 반환을 한다.

 

MYSQL 공식문서 DATE and TIME Function

 

MySQL :: MySQL 8.0 Reference Manual :: 14.7 Date and Time Functions

14.7 Date and Time Functions This section describes the functions that can be used to manipulate temporal values. See Section 13.2, “Date and Time Data Types”, for a description of the range of values each date and time type has and the valid formats

dev.mysql.com

  • DATETIME의 형식은 YYYY-MM-DD hh:mm:ss 형식으로 반환
  • DATE 형식은 YYYY-MM-DD 형식으로 반환한다.
  • DATE 타입은 YYYY-MM-DD 형식이지만 DATE_FORMAT으로 %Y-%m-%d %h:%m:%s 형식으로 변환을 한다면 시분초값은 0으로 지정이 된다.

날짜의 형식을 나타낸 정규표현식 표이다.

FORMAT 설명
%M Month 월(Janeary, February ...)
%m Month 월(01, 02, 03 ...)
%W Day of Week 요일(Sunday, Monday ...)
%D Month 월(1st, 2dn, 3rd ...)
%Y Year 연도(1999, 2000, 2020)
%y Year 연도(99, 00, 20)
%X Year 연도(1999, 2000, 2020) %V와 같이쓰임
%x Year 연도(1999, 2000, 2020) %v와 같이쓰임
%a Day of Week요일(Sun, Mon, Tue ...)
%d Day 일(00, 01, 02 ...)
%e Day 일(0, 1, 2 ..)
%c Month(1, 2, 3 ..)
%b Month(Jen Feb ...)
%j n번째 일(100, 365)
%H Hour 시(00, 01, 24) 24시간 형태
%h Hour 시(01, 02, 12) 12시간 형태
%I(대문자 아이) Hour 시(01, 02 12) 12시간 형태
%l(소문자 엘) Hour 시(1, 2, 12) 12 시간 형태
%i Minute 분(00, 01 59)
%r hh:mm:ss AP
%T hh:mm:ss
%S, %s Second 초
%p AP, PM
%w Day Of Week (0, 1, 2) 0부터 일요일
%U Week 주(시작: 일요일)
%u Week 주(시작 월요일)
%V Week 주(시작: 일요일)
%v Week 주(시작:월요일)

 

기본 형식을 보자.

 

DATE_FORMAT을 통해서 년월일로 표현한 것을 볼 수 있다.

  • %Y-%m-%d

  • %y-%m-%d를 사용한다면 YY-MM-DD로 표현이 된다.

 

이제 코딩 테스트의 문제를 보자.

 

기본적으로 모든 테이블에 대한 데이터를 모두 뽑아 보았다.

위에 그림과 같이 DATETIME의 타입을 가지고 있는 것을 볼 수 있었다.

 

그렇기에 DATE_FORMAT을 이용해서 %Y-%m-%d 형태로 바꾸어 줬더니 문제에서 원하는 방식으로 나오는 것을 확인할 수 있다.


 

CONCAT

CONCAT함수는 문자열 혹은 컬럼 값을 합칠 때 사용하는 함수이다.

즉, CONCAT 함수는 둘 이상의 문자열을 입력한 순서대로 합쳐서 반환해주는 함수이다.

 

사용방법

CONCAT(A, B, [C, D, ...]) 함으로써 A와 B, C, D를 모두 합쳐서 보여주게 된다. A,B,C,D 등은 문자열이 될 수 있고 컬럼이 될 수 도있다.

 

예시를 보면

select concat('안녕하세요','제','블로그에','와주셔서','감사합니다') AS CONCAT;

 

결과값

CONCAT
'안녕하세요제블로그에와주셔서감사합니다'

 

위와 같은 결과값이 나오게 된다.

 

컬럼 데이터를 합쳐보자.

 

Table이름 : hero

type 이름
1 홍길동
2 세종대왕
3 이순신
4 안중근

 

위와같은 테이블이 있을 때 이것을 Concat을 이용해서 type과 이름 column을 합친다면

SELECT *, CONCAT(TYPE, 이름) as HERO FROM hero;
type 이름 HERO
1 홍길동 1홍길동
2 세종대왕 2세종대왕
3 이순신 3이순신
4 안중근 4안중근

 

컬럼명 넣어서 합쳐진 것을 볼 수 있다.

 

이제 필자가 푼 코딩 테스트 문제를 보자.

 

 

문제에서 평균거리를 계산을 한다고 했을 때 우리는 예시에서와 같이 뒤에 꼭 KM를 붙여주어야 했다. 그렇기에 여기서 CONCAT을 사용해서 'km'를 붙여주었다.

 

이것으로 코딩테스트 문제를 풀다가 알게된 MYSQL 메서드를 작성해 보았다.

728x90
반응형

'DataBase' 카테고리의 다른 글

[DB] DataBase 정규화  (0) 2024.04.15
[MYSQL] PERCENTAGE_RANK 메서드(RANK 함수들), ORDER BY(다중정렬)  (0) 2024.04.15
문의사항과 공지사항 게시판 ERD 설계  (2) 2024.04.14
[DB]ERD 설계  (0) 2024.04.11
MySql 메서드 공부  (1) 2024.02.19