관리 메뉴

나만을 위한 블로그

[PHP] INSERT문과 datetime 유형의 기본값 본문

PHP

[PHP] INSERT문과 datetime 유형의 기본값

참깨빵위에참깨빵 2019. 12. 30. 17:12
728x90
반응형

참고한 사이트 : https://bounce4me.tistory.com/104

 

[Mysql] DATETIME과 TIMESTAMP

- UNIX_TIMESTAMP()함수 사용해서 long 타입의 날짜 뽑기 select UNIX_TIMESTAMP(필드명) from 테이블명 - DATETIME은 한 테이블에 여러개 존재 가능 vs TIMESTAMP 는 한 테이블에 하나만 가능 - DATETIME은 직접..

bounce4me.tistory.com

 

insert문으로 MySQL 안에 값들을 넣어야 할 일이 생겼다.

8가지의 컬럼 중 4개에만 값을 넣고, 나머지에는 아무 값도 넣지 않는 방식으로 값을 넣어야 했다.

그래서 처음에는 insert into users values (1, 'ask', '', '', '', '', 1, 1); 식으로 넣었다.

그런데 이런 에러가 나왔다.

 

ERROR 1292 (22007): Incorrect datetime value: '' for column 'regtime' at row 1

 

datetime 유형의 값을 넣는 과정에서 에러가 났구나...컬럼 이름은 regtime이고....값을 잘못 넣었나 해서 어떻게 넣으면 좋을지 찾아봤다.

그러다 본 곳이 여기다.

https://stackoverflow.com/questions/35565128/mysql-incorrect-datetime-value-0000-00-00-000000/35565866

 

 

MySQL Incorrect datetime value: '0000-00-00 00:00:00'

I've recently taken over an old project that was created 10 years ago. It uses MySQL 5.1. Among other things, I need to change the default character set from latin1 to utf8. As an example, I have

stackoverflow.com

 

여기서 '0000-00-00 00:00:00' 으로 넣었더니 안됐다는 댓글을 봤다. 댓글 쓴 사람의 MySQL 버전은 5.7.13이었다.

나도 안되나 해서 insert into users values (1, 'ask', '', '', '', '0000-00-00 00:00:00', 1, 1); 라는 SQL문을 날려봤다. 안됐다.

 

그래서 datetime 유형에 대해 공부해봤다.

datetime 유형은 날짜+시간 값을 함께 써야 하며 기본 형태는 yyyy-mm-dd hh:mm:ss 였다.

그리고 내가 놓친 게 하나 있었는데 바로 제공 범위였다.

datetime 유형의 제공범위는 1000-01-01부터 9999-12-31까지다.

 

이걸 보고 난 이렇게 해보려고 했다.

 

1. 먼저 1000-01-01만 넣어서 되는지 안되는지 보자.

2. 안된다면 1000-01-01 01:01:01 식으로 넣어보자.

 

1번처럼 1000-01-01을 넣어서 insert into users values (1, 'ask', '', '', '', '1000-01-01', 1, 1); 라는 SQL문을 날렸다.

결과는 query OK, 1 row affected 였다. 값이 잘 들어갔다는 뜻이었다.

 

제대로 들어갔는지 확인하기 위해 select A, B, C, D from users; 로 users라는 DB에서 A~D 컬럼의 값을 조회하니 내 의도대로 값들이 들어가 있는 걸 확인했다.

반응형
Comments