반응형
Error
DATETIME 형식인 컬럼에 문자열로 된 날짜를 넣으려고 했는데 다음과 같은 에러가 출력되었다.
insert into t1
select '08 31 2017 7:14PM'
/*
Error Code: 1292.
Incorrect datetime value:
'08 31 2017 7:14PM' for column 'col_date' at row 1
*/
해결 방법
MySQL이 DATETIME 형식을 인식할 수 있는 형식으로 변환해야 한다.
일반적으로 MySQL에서는 'YYYY-MM-DD HH:MM:SS' 형식을 따른다.
DATETIME 형식을 변환하기 위해서는 STR_TO_DATE() 함수를 사용하면 된다.
입력하는 문자열의 형식을 DATETIME으로 변환할 수 있도록 형식을 매치시켜서 기입해주자.
select (STR_TO_DATE('08 31 2017 7:14PM', '%m %d %Y %h:%i%p'));
-- 결과 : 2017-08-31 19:14:00
STR_TO_DATE 함수
문자열을 DATETIME 형식으로 변환하는 함수
[ 구문 ]
STR_TO_DATE(문자열, 형식)
[ 형식(Format) 설명 ]
- %Y : 네 자리 수 년도 표기
- %y : 두 자리 수 년도 표기
- %m : 월 표기 (01 ~ 12)
- %M : 월 이름으로 표기 (January to December)
- %d : 일 표기 (01 ~ 31)
- %D : 일+접미사로 표기 (1st, 2nd, 3rd, ...)
- %H : 시 표기 (00 ~ 23)
- %h : 시 표기 (00 ~ 12)
- %i : 분 표기 (00 ~ 59)
- %s 혹은 %S : 초 표기 (00 ~ 59)
- %p : 오전 오후 표기 (AM or PM)
- %T : 24시간 형식의 시간 표기 (hh:mm:ss)
[ 예시 ]
select STR_TO_DATE('08 31 2017 7:14PM', '%m %d %Y %h:%i%p');
-- 08 : 월 %m
-- 31 : 일 %d
-- 2017 : 4자리수 년도 %Y
-- 7 : 시 %h
-- 14 : 분 %i
-- PM : 오전/오후 %p
참고
반응형