파일명 혹은 변수에 '-'가 제거된 날짜값을 사용하게 되는데(20220715)
날짜 형식으로 변환할 때 MySQL 에서는 str_to_date 함수를 사용할 수 있습니다.
%Y | 4자리 년도 | %T | hh:mm:ss |
%y | 2자리 년도 | %r | hh:mm:ss AM/PM |
%m | 2자리 월(01, 02, 10, 11 ...) | %M | 월 (영문 전체 March, July ...) |
%c | 월(1, 2, 10, 11 ...) | %b | 월 (영문 축약 Mar, Jul ...) |
%d | 2자리 일(01, 01, 10, 11 ...) | %W | 요일 (영문 전체 Monday, Thursday ...) |
%e | 일(1, 2, 10, 11 ...) | %a | 요일 (영문 축약 Mon, Thu ...) |
%H | 24시간제 시간 | ||
%l | 12시간제 시간 | ||
%i | 2자리 분 (05, 15 ...) | ||
%S | 2자리 초 (05, 15 ...) |
사용 방법은 위 포맷을 참고하여 아래와 같이 사용해 주시면 됩니다.
하지만 아래와 같이 31을 넘어가는 날짜가 입력되면 null을 출력하지만
4월31을 입력할 경우 4월30일 에서 하루 지난 5월1일을 출력하는 오류가 있습니다.
-- MySQL 5.7.37 / MySQL 8.0.23 / MariaDB 10.1.48 모두에서 아래와 같이 출력 됩니다.
select str_to_date(20220230, '%Y%m%d'); -- 2022-03-02 출력 (Error: 22년 2월은 28일 까지만 존재)
select str_to_date(20220430, '%Y%m%d'); -- 2022-04-30 출력
select str_to_date(20220431, '%Y%m%d'); -- 2022-05-01 출력 (Error: 4월은 30일 까지만 존재함)
select str_to_date(20220432, '%Y%m%d'); -- null 출력
select str_to_date(20220531, '%Y%m%d'); -- 2022-05-31 출력
select str_to_date(20220532, '%Y%m%d'); -- null 출력
입력된 날짜의 무결성이 중요하다면 함수를 만들어 사용하는 것이 좋을 것 같습니다.
'Database & Data > MYSQL' 카테고리의 다른 글
MariaDB / MySQL 5.7 / MySQL 8.0 performance_schema 환경변수 비교 (2) | 2022.09.24 |
---|---|
MariaDB / MySQL 5.7 / MySQL 8.0 performance_schema 비교 (0) | 2022.09.24 |
Window PC에 동일 버전 MySQL(MariaDB) 2개(다수)설치 방법 (0) | 2021.01.03 |
MySQL Scheduler(Agent) 설정 방법 (0) | 2020.08.29 |
MySQL 대량 ROW 조회 결과 파일 저장 및 불러오기 (0) | 2020.08.26 |