Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Nie można przekonwertować varchar na datetime w MySql

Wspomniane trzy kroki @Arkain byłyby za pomocą funkcji 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`;

Pełną listę specyfikatorów dla STR_TO_DATE można znaleźć pod adresem DATE_FORMAT , tutaj fragment z tymi, których użyłem:

%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 AKTUALIZACJI

Jeśli nowa kolumna powinna mieć atrybut NOT NOLL, jednym ze sposobów może być ustawienie trybu sql przed operacją na '' i zresetowanie trybu sql_mode później:

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;

Zaktualizowana wersja demonstracyjna



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak dodać sumę jako ostatni wiersz w moim sql?

  2. MySQL:nie można nadać nazw tabelom w przypadku Upper Camel (przypadek Pascala)

  3. pobieraj 3 wiersze każdego dnia, jeśli planujesz na 1 rok

  4. Jak zainstalować adapter Rails MySQL?

  5. Wyjątek mySQL:nie można połączyć się z żadnym z określonych hostów MySQL. przez C#