Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Tidak dapat mengonversi varchar ke datetime di MySql

Tiga langkah yang disebutkan @Arkain akan dilakukan dengan bantuan fungsi STR_TO_DATE

-- add the new column
ALTER TABLE `my_table` ADD COLUMN `date_time` DATETIME; 

-- update the new column with the help of the function STR_TO_DATE
UPDATE `my_table` SET `date_time` = STR_TO_DATE(`_time`, '%Y%m%d%H%i');

-- drop the old column
ALTER TABLE `my_table` DROP COLUMN `_time`;

Daftar lengkap penentu untuk STR_TO_DATE dapat ditemukan di DATE_FORMAT , berikut kutipan dengan yang saya gunakan:

%d  Day of the month, numeric (00..31)
%H  Hour (00..23)
%i  Minutes, numeric (00..59)
%m  Month, numeric (00..12)
%Y  Year, numeric, four digits

Demo UPDATE

Jika kolom baru harus memiliki atribut NOT NOLL, salah satu caranya adalah dengan mengatur mode sql sebelum operasi ke '' dan mengatur ulang sql_mode nanti:

SET @old_mode = @@sql_mode;
SET @@sql_mode = '';        -- permits zero values in DATETIME columns

ALTER TABLE `my_table` ADD COLUMN `date_time` DATETIME NOT NULL; 
UPDATE `my_table` SET `date_time` = STR_TO_DATE(`_time`, '%Y%m%d%H%i');
ALTER TABLE `my_table` DROP COLUMN `_time`;

SET @@sql_mode = @old_mode;

Demo yang Diperbarui



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gabungkan beberapa bidang menjadi satu dengan SQL

  2. Memigrasikan MySQL ke PostgreSQL di AWS RDS, Bagian 2

  3. MySQL Query - mendapatkan catatan yang hilang saat menggunakan group-by

  4. TIME_TO_SEC() Contoh – MySQL

  5. Memasukkan Tanggal dari formulir menggunakan PHP Mysql