sql >> Database >  >> RDS >> Mysql

Kan varchar niet converteren naar datetime in MySql

De drie stappen die @Arkain noemt, zijn met behulp van de functie 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`;

De volledige lijst met specificaties voor STR_TO_DATE is te vinden op DATE_FORMAT , hier een fragment met degene die ik heb gebruikt:

%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 van de UPDATE

Als de nieuwe kolom het kenmerk NOT NOLL zou moeten hebben, zou een manier kunnen zijn om de sql-modus voor de bewerking in te stellen op '' en de sql_mode later opnieuw in te stellen:

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;

Bijgewerkte demo



  1. Converteer latin1-tekens op een UTF8-tabel naar UTF8

  2. Voorkom meerdere aanmeldingen van dezelfde gebruiker op een desktoptoepassing

  3. Hoe kan ik een volledige tabelscan op deze mysql-query vermijden?

  4. hoe toegang krijgen tot mysql externe database