MySQL에서 DATE를 DATETIME으로 변경하는 방법
MySQL에서 컬럼의 데이터 유형을 DATE(날짜)에서 DATETIME(날짜/시간)으로 변경하려면 ALTER 명령어와 CHANGE 절을 함께 사용하면 됩니다. 기본 문법은 다음과 같습니다.
alter table 테이블이름 change 컬럼이름 컬럼이름 datetime;
CHANGE 절은 '기존 컬럼명 → 새 컬럼명 → 새 데이터 유형' 순서로 지정하기 때문에 컬럼 이름이 두 번 등장합니다. 컬럼 이름을 그대로 유지하고 싶다면 같은 이름을 두 번 입력하면 됩니다.
1단계: 테이블 생성
먼저 예제로 사용할 테이블을 만들어 보겠습니다.
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
LoginDate date
);
Query OK, 0 rows affected (1.26 sec)
2단계: 데이터 삽입
INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable(LoginDate) values('2019-01-21');
Query OK, 1 row affected (0.29 sec)
mysql> insert into DemoTable(LoginDate) values('2018-05-01');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable(LoginDate) values('2017-12-31');
Query OK, 1 row affected (0.12 sec)3단계: 저장된 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
출력 결과
+----+------------+
| Id | LoginDate |
+----+------------+
| 1 | 2019-01-21 |
| 2 | 2018-05-01 |
| 3 | 2017-12-31 |
+----+------------+
3 rows in set (0.66 sec)
4단계: 데이터 유형 변경
다음 쿼리를 실행하면 LoginDate 컬럼의 유형이 date에서 datetime으로 변경됩니다.
mysql> alter table DemoTable change LoginDate LoginDate datetime;
Query OK, 3 rows affected (1.63 sec)
Records : 3 Duplicates : 0 Warnings : 0
5단계: 변경 결과 확인
DESC 명령어로 테이블 구조를 확인해 보겠습니다.
mysql> desc DemoTable;
출력 결과
+-----------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+----------+------+-----+---------+----------------+
| Id | int(11) | NO | PRI | NULL | auto_increment |
| LoginDate | datetime | YES | | NULL | |
+-----------+----------+------+-----+---------+----------------+
2 rows in set (0.19 sec)
출력 결과에서 LoginDate 컬럼의 Type이 datetime으로 변경된 것을 확인할 수 있습니다. 참고로, 기존에 저장된 날짜 값에는 시간 정보가 없었기 때문에 변경 후에는 자동으로 00:00:00이 붙게 됩니다. 앞으로 해당 컬럼에는 날짜와 함께 시간까지 저장할 수 있습니다.