프로그래머스에서 아래의 SQL 문제를 풀다가 날짜를 DATE_FORMAT 으로만 출력하는 나를 발견하고 정리하게 되었다.
https://school.programmers.co.kr/learn/courses/30/lessons/151139
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
MySQL에서 연월일 출력하기
MONTH (DATE 타입) 으로 월 출력하기
SELECT MONTH(DATE('20220807')) FROM DUAL;
-- 8
SELECT DATE_FORMAT(DATE('20220807'),'%m') FROM DUAL;
-- 08
문제의 조건은 1~9월은 좌측 0을 제거한 상태로 출력해야했다.
익숙한 DATE_FORMAT 으로 '08' 로 바꾼 상태에서 REPLACE 나 TRIM 을 쓰려니 우측 0 도 제거되거나 너무 복잡해지는 문제점이 있어 검색을 반복했다. 그 결과 MONTH() 를 사용하여 좌측 0이 제거된 상태로 월을 출력할 수 있었다.
YEAR (DATE 타입) 으로 연 출력하기
SELECT YEAR(DATE('20220807')) FROM DUAL;
-- 2022
YEAR() 을 사용하여 연도만 따로 출력할 수 있다.
DAY (DATE 타입) 으로 일 출력하기
SELECT DAY(DATE('20220807')) FROM DUAL;
-- 7
DAY() 도 MONTH() 와 마찬가지로 좌측 0 을 제외하고 출력해준다.
정리
간단하지만 자주 사용을 하지않았더니 잘 잊어버리게 되는 것 같아 정리해보았다. 또한 공식문서를 참조하는 습관이 필요하다.
https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html
MySQL :: MySQL 8.0 Reference Manual :: 12.7 Date and Time Functions
12.7 Date and Time Functions This section describes the functions that can be used to manipulate temporal values. See Section 11.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
'SQL' 카테고리의 다른 글
[SQL] CASE-WHEN, 조건에 따라 출력하기 (0) | 2023.06.12 |
---|---|
[Oracle/MySQL] ROWNUM과 LIMIT, 행 수 제한하기 (3) | 2023.06.09 |
[Oracle/MySQL] CONCAT, 문자열 합치기 (0) | 2023.06.08 |
[MySQL] REGEXP, 정규표현식을 이용하여 검색하기 (0) | 2023.06.06 |
[Oracle/MySQL] 날짜 연산, 이전 달 출력하기 (0) | 2023.05.31 |