2014-04-08 5 views

답변

1

'%H:%i'의 형식이 올바르게 유지 된 경우, 다음 수 아래와 alter 열 정의 :

alter table table_name modify column column_name time; 

데모 없음 구문 분석 데이터를 포함하는 필드의 경우

mysql> create table so.tm(t varchar(10)); 
mysql> desc tm; 
+-------+-------------+------+-----+---------+-------+ 
| Field | Type  | Null | Key | Default | Extra | 
+-------+-------------+------+-----+---------+-------+ 
| t  | varchar(10) | YES |  | NULL |  | 
+-------+-------------+------+-----+---------+-------+ 

mysql> insert into tm values ('09:45'), ('18:24'), ('ravin'); 
Query OK, 3 rows affected (0.08 sec) 

mysql> select t, str_to_date(t, '%H:%i') from tm; 
+-------+---------------------------+ 
| t  | str_to_date(t, '%H:%i') | 
+-------+---------------------------+ 
| 09:45 | 09:45:00     | 
| 18:24 | 18:24:00     | 
| ravin | NULL      | 
+-------+---------------------------+ 

'ravin'이라고 말하면 alter 명령으로 다음 오류가 발생했습니다.

mysql> alter table tm modify column t time; 
ERROR 1292 (22007): Incorrect time value: 'ravin' for column 't' at row 3 

mysql> select t, str_to_date(t, '%H:%i') from tm; 
+-------+---------------------------+ 
| t  | str_to_date(t, '%H:%i') | 
+-------+---------------------------+ 
| 09:45 | 09:45:00     | 
| 18:24 | 18:24:00     | 
| ravin | NULL      | 
+-------+---------------------------+ 
3 rows in set, 1 warning (0.00 sec) 

mysql> delete from tm where t is null; 
Query OK, 0 rows affected (0.06 sec) 

mysql> alter table tm modify column t time; 
Query OK, 2 rows affected (1.05 sec) 

mysql> desc tm; select t from tm; 
+-------+------+------+-----+---------+-------+ 
| Field | Type | Null | Key | Default | Extra | 
+-------+------+------+-----+---------+-------+ 
| t  | time | YES |  | NULL |  | 
+-------+------+------+-----+---------+-------+ 

+----------+ 
| t  | 
+----------+ 
| 09:45:00 | 
| 18:24:00 | 
+----------+ 
+0

Charm! 고맙습니다! –

관련 문제