MySQL Data Type – DATE와 DATETIME

■ 참고 : The DATE, DATETIME, and TIMESTAMP Types
 

■ mysql 테이블 생성시 DATE타입으로 컬럼을 생성하고 NOW() 함수로 데이터를 입력하자 데이터 입력은 되나 경고 메세지를 출력하였다. 위의 참고 사이트를 확인하니 DATE타입은 ‘YYYY-MM-DD’형식으로 ‘1000-01-01’부터 ‘9999-12-31’까지만 입력이 된다. DATETIME 데이터 타입은 ‘YYYY-MM-DD HH:MM:SS’형식으로 ‘1000-01-01 00:00:00’부터 ‘9999-12-31 23:59:59’까지 데이터를 입력가능하다. 결론은 NOW() 혹은 SYSDATE()로 현재 날짜와 시간을 읽어와서 데이터를 테이블 컬럼에 입력하고자 할 경우에는 데이터 타입을 DATETIME으로 컬럼을 생성해야 한다.
 

■ DATE 데이터타입 컬럼 하나와 DATETIME 데이터타입 컬럼 하나를 가지는 ‘T1’이라는 이름의 테이블을 생성한다.

mysql> CREATE TABLE T1 (
    ->  DT1     DATE,
    ->  DT2     DATETIME
    -> );
Query OK, 0 rows affected (0.01 sec)
mysql>

 

■ DATE 타입의 DT1 컬럼과 DATETIME 타입의 DT2컬럼에 NOW()함수를 이용하여 현재 날짜(시간)을 입력하였더니 입력은 되는데 1개의 경고 메세지가 발생했다. SHOW WARNING 메세지로 확인하니 DT1 컬럼에 데이터가 입력되면서 데이터가 잘렸고, DT2컬럼에는 초단위 데이터가 입력되었는데 DT1 컬럼에는 일 단위 데이터만 들어가 있다.

mysql> INSERT INTO T1 ( DT1, DT2 )
      -> VALUES( NOW(), NOW() );
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> SHOW WARNINGS;
+-------+------+-------------------------------------------------+
| Level | Code | Message                                         |
+-------+------+-------------------------------------------------+
| Note  | 1265 | Data truncated for column 'DT1' at row 1        |
+-------+------+-------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT * FROM T1;
+------------+----------------------------+
| DT1        | DT2                        |
+------------+----------------------------+
| 2016-03-14 | 2016-03-14 15:03:09        |
+------------+----------------------------+
1 rows in set (0.00 sec)

 

■ DT1 컬럼의 데이터 타입을 DATE에서 DATETIME으로 변경하고 NOW() 데이터를 입력하니 경고 메세지가 발생하지 않았고 데이터도 초 단위까지 잘 들어간다.

mysql> ALTER TABLE T1 MODIFY DT1 DATETIME;
Query OK, 1 row affected (0.03 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> INSERT INTO T1 ( DT1, DT2 )
    -> VALUES( NOW(), NOW() );
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM T1;
+-------------------------+--------------------------+
| DT1                     | DT2                      |
+-------------------------+--------------------------+
| 2016-03-14 00:00:00     | 2016-03-14 15:03:09      |
| 2016-03-14 15:15:11     | 2016-03-14 15:15:11      |
+-------------------------+--------------------------+
2 rows in set (0.00 sec)

 
 
 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다