TEST 로그 테이블
CREATE TABLE TestLOG
(
        TestDATE  Date   NOT NULL,
        TestTIME Time   NOT NULL,
        LogText varCHAR(255)
);

현제 날짜 시간 입력하는 SQL 문
INSERT INTO TestLOG (TestDATE, TestTIME, LogText)
VALUES (
    cast('now' as DATE),
    cast('now' as TIME),
   'TEST LOG INSERT DATA',
);

이렇게 하면 SQL문 만으로 오늘 날짜와 시간이 자동으로 입력된다.
Posted by 띠리
데이터베이스의 날짜를 입력할때 간간히 헤깔리는 경우가 있다.
"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);

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");

밑의 예제와 같이 입력을하면 에러가 뜬다.

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

문제없이 입력된 데이터를 보면 아래와 같다.

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)

만들어진 테이블의 정보를 보면 아래와 같다

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 |       |
+------------+-----------+------+-----+-------------------+-------+

위의 표를 보면 timestamp는 디폴트 값이 있다.
timestamp의 값은 입력을 하지 않으면 자동으로 현재 일시를 입력해준다.
(그래서 시간 도장이란 이름이였군)

Posted by 띠리
BLOG main image
프로그래밍 공부하면서 써가는 개인 노트 (따라서 여기에 씌여있는 소스의 신빙성을 보장 못함 -.-;;) 이 블로그 보면서 틀린 점이 있으면 꼬옥 알려주세요. by 띠리

공지사항

카테고리

분류 전체보기 (323)
Win32 SDK 초보 (27)
통신관련 (11)
MFC TIP (20)
C/C++ TIP (10)
개발기타 (10)
링크 (2)
견물생심 (24)
이것저것 (8)
용어메모 (3)
데이터베이스 (32)
비주얼 베이직 (10)
하드웨어 (3)
C# (42)
Xcode (3)
델파이 (82)
홈페이지 (5)
MindStorm (0)
낙서 (5)
스크래치 (0)
기타 (6)
아두이노 (1)
라즈베리파이 (2)
안드로이드 (6)
파이썬 (0)
WEB (2)
Total : 995,622
Today : 112 Yesterday : 316