sql >> Database teknologi >  >> RDS >> Mysql

Kan ikke konvertere varchar til datetime i MySql

De tre nævnte trin @Arkain ville være ved hjælp af funktionen 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`;

Den komplette liste over specifikationer for STR_TO_DATE kan findes på DATE_FORMAT , her et uddrag med dem jeg brugte:

%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 af OPDATERING

Hvis den nye kolonne skal have attributten NOT NOLL, kunne en måde være at indstille sql-tilstanden før operationen til '' og nulstille sql_mode senere:

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;

Opdateret demo



  1. Sådan får du forskellen mellem to datoer afrundet til timer

  2. Hvordan virker COPY, og hvorfor er det så meget hurtigere end INSERT?

  3. Sådan indstilles startværdien manuelt som 1000 i MySQL

  4. Når jeg opretter forbindelse til min Sql, får jeg adgang nægtet for brugeren [email beskyttet] ( Bruger adgangskode :Ja )