sql >> データベース >  >> RDS >> Mysql

MySqlでvarcharをdatetimeに変換できません

    @Arkainが言及した3つのステップは、関数 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`;
    

    STR_TO_DATEの指定子の完全なリストは、 DATE_FORMAT 、ここで私が使用したものの抜粋:

    %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
    

    アップデートのデモ

    新しい列の属性がNOTNOLLである必要がある場合、1つの方法は、操作の前にSQLモードを''に設定し、後でsql_modeをリセ​​ットすることです。

    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;
    

    更新されたデモ



    1. ユーザー定義のレコード・データ型を持つPL/SQLの強力な参照カーソル

    2. 未定義の変数を修正する方法:LaravelのdomPDFの共同編集者

    3. 年数を取得するためのOracleの日付の差

    4. なぜフレームワークを使用するのですか? ZendFrameworkを理解して使用する必要があると私に納得させてください