일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코틀린 클래스
- 구글로그인
- LeetCode SQL
- Leetcode
- spring boot
- 스프링
- python
- javascript
- oauth2
- 프로그래머스
- SQL 문제풀이
- SQL
- SQL프로그래머스
- pygame
- MSA
- java8
- Spring
- 자바 스트림
- 자바8
- 오라클
- oracle
- js
- springboot
- 스프링시큐리티
- 파이게임
- 자바스크립트
- kotlin 클래스
- mysql
- 스프링부트
- 스프링부트 채팅서버
Archives
- Today
- Total
웅겹살의 프로그래밍 삼매경
[SQL] 프로그래머스 DATETIME에서 DATE로 형변환 본문
728x90
https://programmers.co.kr/learn/courses/30/lessons/59414?language=mysql
1) 오라클 ORACLE
정답
SELECT
ANIMAL_ID
,NAME
,TO_CHAR(DATETIME, 'YYYY-MM-DD') AS 날짜
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
TO_CHAR 날짜 변환 포맷
포맷 | 설명 | 사용 예 |
AM, A.M. | 오전 | TO_CHAR(SYSDATE, ‘AM’) → 오전 |
PM, P.M. | 오후 | TO_CHAR(SYSDATE, ‘PM’) → 오후 |
YYYY, YYY, YY, Y | 연도 | TO_CHAR(SYSDATE, ‘YYYY’) → 2014 |
MONTH, MON | 월 | TO_CHAR(SYSDATE, ‘MONTH’) → 2월 |
MM | 01~12 형태의 월 | TO_CHAR(SYSDATE, ‘MM’) → 02 |
D | 주중의 일을 1~7로 | TO_CHAR(SYSDATE, ‘D’) → 2 |
DAY | 주중 일을 요일로 표시 | TO_CHAR(SYSDATE, ‘DAY’) → 월요일 |
DD | 일을 01~31 형태로 표시 | TO_CHAR(SYSDATE, ‘DD’) → 01 |
DDD | 일을 001~365 형태로 | TO_CHAR(SYSDATE, ‘DDD’) → 041 |
DL | 현재 일을 요일까지 표시 | TO_CHAR(SYSDATE, ‘DL’) → 2014년 2월 10일 월요일 |
HH, HH12 | 시간을 01~12시 형태로 | TO_CHAR(SYSDATE, ‘HH’) → 04 |
HH24 | 시간을 01~23시 형태로 | TO_CHAR(SYSDATE, ‘HH24’) → 16 |
MI | 분을 00~59분 형태로 | TO_CHAR(SYSDATE, ‘MI’) → 56 |
SS | 초를 01~59초 형태로 | TO_CHAR(SYSDATE, ‘SS’) → 33 |
FF | 밀리초(milliseconds) | TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISSFF') |
WW | 주를 01~53주 형태로 | TO_CHAR(SYSDATE, ‘WW’) → 06 |
TO_CHAR 숫자 변환 포맷
포맷 | 설명 | 사용 예 |
, (콤마) | 콤마로 표시 | TO_CHAR(123456, ‘999,999’) → 123,456 |
. (소수점) | 소수점 표시 | TO_CHAR(123456.4, ‘999,999.9’) → 123,456.4 |
9 | 한 자리 숫자, 실제 값보다 크거나 같게 명시 | TO_CHAR(123456, ‘999,999’) → 123,456 |
PR | 음수일 때 < >로 표시 | TO_CHAR(-123, ‘999PR’) → <123> |
RN, rn | 로마 숫자로 표시 | TO_CHAR(123, ‘RN’)→CXXIII |
S | 양수이면 +, 음수이면 - 표시 | TO_CHAR(123, ‘S999’) → +123 |
2) MYSQL
정답
SELECT
ANIMAL_ID
,NAME
,DATE_FORMAT(DATETIME, '%Y-%m-%d') AS 날짜
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
MySQL DATE_FORMAT
Syntax:
DATE_FORMAT(날짜, 포맷)
- 날짜를 특정 포맷의 문자로 변환하는 함수
- 첫 번째 매개변수로 날짜를, 두 번째 매개변수로 포맷을 지정한다.
DATE_FORMAT 포맷 정리
포맷 | 설명 |
%a | 일(Sun ~ Sat) |
%b | 월(Jan ~ Dec) |
%c | 월(0 ~ 12) |
%D | 일(1st, 2nd, 3rd, ...) |
%d | 일(01 ~ 31) |
%e | 일(0 ~ 31) |
%f | Microseconds (000000 to 999999) |
%H | 시간(00 ~ 23) |
%h | 시간(00 ~ 12) |
%I | 시간(00 ~ 12) |
%i | 분(00 ~ 59) |
%j | Day of the year (001 to 366) |
%k | 시간(0 ~ 23) |
%l | 시간(1 ~ 12) |
%M | 월(January ~ December) |
%m | 월(00 ~ 12) |
%p | AM or PM |
%r | 시간(12시)을 hh:mm:ss AM/PM 형식으로 |
%S | 초(00 ~ 59) |
%s | 초(00 ~ 59) |
%T | 시간(24시)을 hh:mm:ss 형식으로 |
%U | Week where Sunday is the first day of the week (00 ~ 53) |
%u | Week where Monday is the first day of the week (00 ~ 53) |
%V | Week where Sunday is the first day of the week (01 ~ 53). Used with %X |
%v | Week where Monday is the first day of the week (01 ~ 53). Used with %x |
%W | 일(Sunday ~ Saturday) |
%w | Day of the week where Sunday=0 and Saturday=6 |
%X | Year for the week where Sunday is the first day of the week. Used with %V |
%x | Year for the week where Monday is the first day of the week. Used with %v |
%Y | 연도(4자리) |
%y | 연도(2자리) |
TO_CHAR & DATE_FORMAT 포맷 매핑
Oracle의 TO_CHAR 함수를 MySQL의 DATE_FORMAT으로 변경할 때 대응되는 포맷을 표로 정리한 것이다.
결과 | Oracle TO_CHAR | MySQL DATE_FORMAT |
연도(4자리) | YYYY | %Y |
연도(2자리) | YY | %y |
연도(4자리, YYYY와 동일) | RRRR | %Y |
연도(2자리, YY와 동일) | RR | %y |
월(1~12) | MM | %m |
월(Jan~Dec) | MON | %b |
월(January~December) | MONTH | %M |
일(1~31) | DD | %d |
일(Sun~Sat) | DY | %a |
시간(0~23) | HH24 | %H |
시간(1~12) | HH 또는 HH12 | %h |
분(0~59) | MI | %i |
초(0~59) | SS | %s |
References
728x90
'SQL > SQL 문제풀이' 카테고리의 다른 글
[SQL] 프로그래머스 입양 시각 구하기(1) (2) | 2021.07.04 |
---|---|
[SQL] 프로그래머스 오랜 기간 보호한 동물(2) (0) | 2021.01.28 |
[SQL] 프로그래머스 JOIN 있었는데요 없었습니다 (1) | 2021.01.27 |
[SQL] 프로그래머스 중복 제거하기 (0) | 2021.01.27 |
[SQL] 프로그래머스 NULL 처리하기 (0) | 2021.01.25 |
Comments