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

文字列/varcharをMySQLテーブル間で日付に変換する

    STR_TO_DATE 機能:

    UPDATE yourtable
    SET
      new_column = STR_TO_DATE(varchar_date, '%m-%d-%Y')
    WHERE
      STR_TO_DATE(varchar_date, '%m-%d-%Y') IS NOT NULL
    

    次に、同じクエリを、日付形式を'%m/%d/%Y'とします。 、そして再び'%M %D, %Y' 。形式が一致しない場合、STR_TO_DATEはNULLを返し、行は更新されません。

    既存のデータを新しいテーブルに挿入する場合は、次のように使用できます。

    INSERT INTO new_table (ID, col1, col2, new_column)
    SELECT
      ID, col1, col2,
      COALESCE(STR_TO_DATE(varchar_date, '%m-%d-%Y'),
               STR_TO_DATE(varchar_date, '%m/%d/%Y'),
               STR_TO_DATE(varchar_date, '%M %D, %Y'))
    FROM oldtable
    

    (new_columnは日付列であり、PHPまたはDATE_FORMATを使用して希望どおりにフォーマットできます)



    1. Oracle SQL:列は許可されていません

    2. PostgreSQL9.0のバックアップとリカバリ

    3. 同じステートメントで挿入のIDを取得します

    4. ソケット'/tmp/mysql.sock'を介してローカルMySQLサーバーに接続できません(2)