दो बातें:
सबसे पहले, आपका str_to_date() प्रारूप इनपुट स्ट्रिंग के प्रारूप से मेल खाना चाहिए। अगर आपकी इनपुट स्ट्रिंग 10/21/2016 15:02
है , तो आपका प्रारूप %m/%d/%Y %H:%i
. है .
यहां प्रारूप कोड के लिए एक संदर्भ देखें:https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format
दूसरा, UPDATE का उपयोग करने से कॉलम का डेटा प्रकार नहीं बदलता है, यह केवल varchar स्ट्रिंग की सामग्री को बदलता है।
mysql> create table t (v varchar(50));
mysql> insert into t values ('10/21/2016 15:02');
mysql> update t set v = str_to_date(v, '%m/%d/%Y %H:%i');
mysql> select * from t;
+---------------------+
| v |
+---------------------+
| 2016-10-21 15:02:00 |
+---------------------+
अब यह सही प्रारूप में है, लेकिन यह अभी भी एक वर्चर है।
mysql> alter table t modify v datetime;
mysql> select * from t;
+---------------------+
| v |
+---------------------+
| 2016-10-21 15:02:00 |
+---------------------+
अब डेटा प्रकार बदल दिया गया है।
mysql> show create table t\G
CREATE TABLE `t` (
`v` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4