일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 퍼널분석
- fundbox
- aarrr
- 올라
- 한장으로끝내는비즈니스모델100
- allra
- 전환율
- activation
- 서말리포켓
- 비즈니스모델
- mysql설치 #mysql #mysqluser #mysqlworkbench
- 핀테크
- 활성화
- 인게이지먼트
- 데이터분석
- 팔방이익구조
- 바로팜
- sklearn
- 리텐션
- 역설구조
- 셀프스토리지
- 머신러닝
- 코호트
- 선정산서비스
- retention
- 그로스해킹
- CAC
- pmf
- model_selection
- BM분석
- Today
- Total
데이터로그😎
[SQL기본] 날짜형식 관련 함수 본문
테이블 컬럼 type 확인하기
HISTORY_DT라는 테이블이 있다고 가정하자.
이 때 테이블 내 column의 형식을 확인하고 싶다면, DESC + 테이블명 을 사용하면 된다.
DESC HISTORY_DT;
확인 결과, DT (날짜) 컬럼의 Type이 date이다. 만약 이 date타입의 컬럼을 문자열로 바꾸고 싶을 땐 어떻게 해야할까?
DATE_FORMAT : 날짜 데이터 → 문자열
날짜형 데이터를 문자열로 바꾸고 싶다면 DATE_FORMAT(변환할 날짜형식 컬럼, 변환형식) 을 사용할 수 있다.
변환 결과로 생성된 tr_date 1, 2,3 컬럼을 확인해보면 원하는 형식대로 변환된 것을 확인할 수 있다.
SELECT DATE_FORMAT(DT, '%Y%m%d') as tr_date,
DATE_FORMAT(DT, '%Y-%m') as tr_date2,
DATE_FORMAT(DT, '%Y/%m') as tr_date3
FROM HISTORY_DT;
STR_TO_DATE : 문자열 → 날짜 데이터
만약 문자열을 날짜로 바꾸고 싶을 때는 STR_TO_DATE(변환할 문자형 컬럼, 변환형식)을 사용할 수 있다.
예를 들어보겠다. 만약 날짜가 '2019-01-02'인 row를 찾고싶다면? 이 때는 모든 DT 컬럼의 row를 문자로 바꾸어 아래와 같이 실행할 수도 있다. 그러나... row가 매우 많다면 시간이 굉장히 오래걸리겠지?
SELECT *
FROM HISTORY_DT
WHERE DATE_FORMAT(DT, '%Y%m%d') = '20190102'
따라서 아래와 같이 문자인 '2019-01-02'를 DATE타입으로 바꾸어 수행하는 것이 더 좋다.
SELECT *
FROM HISTORY_DT
WHERE DT = STR_TO_DATE('2019-01-02','%Y-%m-%d');
** 사실 MySQL은 아래와 같이 쿼리문을 실행해도 정상적으로 실행이 된다. 이는 자동변환이라는 개념 떄문이다. 상황에 따라 자료형을 자동으로 변환하는 것을 의미한다. 원칙상 서로 다른 자료형 간에는 연산이 불가하다. 그러므로 연산 시 자료형을 맞춰주는 것이 중요한데, MySQL에서는 문자-날짜 간 비교가 발생하면 문자를 자동으로 날짜로 변환해준다.
하지만 자동변환을 너무 맹신하진 말고... 스스로 변환하는 습관을 들이자..!
SELECT *
FROM HISTORY_DT
WHERE DT = '20190102';
참고
4.04.2 날짜 관련 함수
#### 4.4.2 날짜 관련 함수 날짜 데이터를 다루려면 STR_TO_DATE, DATE_FORMAT, DATE_ADD와 같은 함수를 기억해야 한다. STR_TO_DATE는…
wikidocs.net
'# 1. 언어 > # 1.1. SQL' 카테고리의 다른 글
[MySQL] 테이블 생성, 입력, 수정, 삭제 (0) | 2023.12.29 |
---|---|
[MySQL] 테이블 정보 확인 (0) | 2023.12.29 |
[SQL기본] 문자 패턴 찾기: REGEXP() (1) | 2023.12.20 |
[SQL기본] 윈도우 함수: Lead, Lag() (1) | 2023.11.26 |
[SQL기본] 윈도우 함수: RANK() OVER() (0) | 2023.11.24 |