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

varchar(40)を日時列に変換します

    2つのこと:

    まず、str_to_date()形式は、入力文字列の形式と一致する必要があります。入力文字列が10/21/2016 15:02の場合 、フォーマットは%m/%d/%Y %H:%i

    ここでフォーマットコードのリファレンスを参照してください: https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format

    次に、UPDATEを使用しても列のデータ型は変更されず、varchar文字列の内容が変更されるだけです。

    mysql> create table t (v varchar(50));
    
    mysql> insert into t values ('10/21/2016 15:02');
    
    mysql> update t set v = str_to_date(v, '%m/%d/%Y %H:%i');
    
    mysql> select * from t;
    +---------------------+
    | v                   |
    +---------------------+
    | 2016-10-21 15:02:00 |
    +---------------------+
    

    これで正しい形式になりましたが、それでもvarcharです。

    mysql> alter table t modify v datetime;
    
    mysql> select * from t;
    +---------------------+
    | v                   |
    +---------------------+
    | 2016-10-21 15:02:00 |
    +---------------------+
    

    これでデータ型が変更されました。

    mysql> show create table t\G
    
    CREATE TABLE `t` (
      `v` datetime DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
    



    1. Oracleでスキュー異常を書き込み、PostgreSQLはトランザクションをロールバックしません

    2. 列見出しは、Oracleの出力全体に表示され続けます

    3. ワイルドカードを使用したLIKEを使用したパラメーター化されたクエリの適切なPDO構文(例:%、_)

    4. Play javaでdbスレッドプールを作成し、このプールでdbクエリを作成する方法