데이터베이스/MySQL
MySQL의 date, time, date_time, time_stamp의 입력형식
띠리
2007. 5. 15. 16:27
데이터베이스의 날짜를 입력할때 간간히 헤깔리는 경우가 있다.
"1998-12-31"으로 입력해야되는지
"1999/12/31"으로 입력해야되는지
"19991231"으로 입력해야되는지가...
◆ MySQL의 date, time, date_time, time_stamp의 입력형식
우선 MySQL에서 아무 데이터베이스나 선택해서 밑에 테이블은 만든다.
아래와 같은 형식으로 데이터를 입력하면 문제없이 데이터가 입력된다.
date_time이나 time_stamp는 두가지 입력방식이있다.
① yyyy-mm-dd hh:mm:ss
② yyyymmddhhmmss
밑의 예제와 같이 입력을하면 에러가 뜬다.
문제없이 입력된 데이터를 보면 아래와 같다.
만들어진 테이블의 정보를 보면 아래와 같다
mysql> desc inputtest;
위의 표를 보면 timestamp는 디폴트 값이 있다.
timestamp의 값은 입력을 하지 않으면 자동으로 현재 일시를 입력해준다.
(그래서 시간 도장이란 이름이였군)
"1998-12-31"으로 입력해야되는지
"1999/12/31"으로 입력해야되는지
"19991231"으로 입력해야되는지가...
◆ MySQL의 date, time, date_time, time_stamp의 입력형식
우선 MySQL에서 아무 데이터베이스나 선택해서 밑에 테이블은 만든다.
CREATE TABLE InputTest (date date, time time, date_time datetime, time_stamp timestamp);
아래와 같은 형식으로 데이터를 입력하면 문제없이 데이터가 입력된다.
INSERT INTO InputTest VALUES
("1998-12-31", "23:59:59", "1998-12-31 23:59:59",19981231235959);
("1998-12-31", "23:59:59", "1998-12-31 23:59:59",19981231235959);
date_time이나 time_stamp는 두가지 입력방식이있다.
① yyyy-mm-dd hh:mm:ss
② yyyymmddhhmmss
INSERT INTO InputTest VALUES
("1998-12-31", "23:59:59", 19981231235959,"1998-12-31 23:59:59");
("1998-12-31", "23:59:59", 19981231235959,"1998-12-31 23:59:59");
밑의 예제와 같이 입력을하면 에러가 뜬다.
INSERT INTO InputTest VALUES
("1999/12/31", "13:59:59", "1998/11/31 21:59:59",19991231235959);
ERROR 1136 (21S01): Column count doesn't match value count at row 1
("1999/12/31", "13:59:59", "1998/11/31 21:59:59",19991231235959);
ERROR 1136 (21S01): Column count doesn't match value count at row 1
문제없이 입력된 데이터를 보면 아래와 같다.
mysql> select * from inputtest;
+------------+----------+---------------------+---------------------+
| date | time | date_time | time_stamp |
+------------+----------+---------------------+---------------------+
| 1998-12-31 | 23:59:59 | 1998-12-31 23:59:59 | 1998-12-31 23:59:59 |
+------------+----------+---------------------+---------------------+
1 row in set (0.00 sec)
+------------+----------+---------------------+---------------------+
| date | time | date_time | time_stamp |
+------------+----------+---------------------+---------------------+
| 1998-12-31 | 23:59:59 | 1998-12-31 23:59:59 | 1998-12-31 23:59:59 |
+------------+----------+---------------------+---------------------+
1 row in set (0.00 sec)
만들어진 테이블의 정보를 보면 아래와 같다
mysql> desc inputtest;
+------------+-----------+------+-----+-------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-----------+------+-----+-------------------+-------+
| date | date | YES | | NULL | |
| time | time | YES | | NULL | |
| date_time | datetime | YES | | NULL | |
| time_stamp | timestamp | NO | | CURRENT_TIMESTAMP | |
+------------+-----------+------+-----+-------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-----------+------+-----+-------------------+-------+
| date | date | YES | | NULL | |
| time | time | YES | | NULL | |
| date_time | datetime | YES | | NULL | |
| time_stamp | timestamp | NO | | CURRENT_TIMESTAMP | |
+------------+-----------+------+-----+-------------------+-------+
위의 표를 보면 timestamp는 디폴트 값이 있다.
timestamp의 값은 입력을 하지 않으면 자동으로 현재 일시를 입력해준다.
(그래서 시간 도장이란 이름이였군)