Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Chuyển đổi varchar (40) thành cột datetime

Hai điều:

Đầu tiên, định dạng str_to_date () của bạn phải khớp với định dạng của chuỗi đầu vào. Nếu chuỗi đầu vào của bạn là 10/21/2016 15:02 , thì định dạng của bạn là %m/%d/%Y %H:%i .

Xem tham chiếu cho các mã định dạng tại đây: https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html# Chức năng_date-format

Thứ hai, việc sử dụng UPDATE không thay đổi kiểu dữ liệu của cột, nó chỉ thay đổi nội dung của chuỗi 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 |
+---------------------+

Bây giờ nó ở đúng định dạng, nhưng nó vẫn là một varchar.

mysql> alter table t modify v datetime;

mysql> select * from t;
+---------------------+
| v                   |
+---------------------+
| 2016-10-21 15:02:00 |
+---------------------+

Bây giờ, loại dữ liệu đã được thay đổi.

mysql> show create table t\G

CREATE TABLE `t` (
  `v` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sao chép dữ liệu từ bảng này sang bảng khác. Cơ sở dữ liệu khác nhau và cấu trúc bảng cũng khác

  2. MYSQL - Thứ tự các giá trị dấu thời gian tăng dần theo thứ tự, từ mới nhất đến cũ nhất?

  3. Làm cách nào để tìm tất cả các hàng con trong MySQL?

  4. Không thể chọn 'OK' trong mysql-apt-config [Ubuntu 14.04]

  5. Làm cách nào để bạn lưu trữ an toàn mật khẩu và muối của người dùng trong MySQL?