MySQL Datetime Insert Error) 문자열을 DATETIME 형식의 날짜로 값 넣기 (Error Code: 1292. Incorrect datetime value)

반응형

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

참고

반응형