2012-02-24 11 views
3

私は日付フィールド(tinytext)の日付情報を "dd-mm-yy"(07-01-90など)の形式で保持しています。 mysqlクエリを使用して、yyyy-mm-ddの日付形式に変更したいと思います。私は以下のコードを試しましたが、何も起こりません。あなたは、PHPでmy_sqlを使用している場合mysqlの変更日付フォーマット

mysql_query("UPDATE Table SET date=STR_TO_DATE('date','%Y,%m,%d')"); 
+1

は[ 'DATE_FORMAT()'](http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.htmlてみてください#1 function_date形式) – diEcho

答えて

6

あなたは目標を達成するために正しい機能STR_TO_DATE(str,format)を使用していますが、あなたはmaです王2つのミス:あなたのクエリで

  1. format引数は文字列の表現形式と一致していません。 %Y,%m,%d(カンマ区切り)をformat引数に渡している間は、dd-mm-yy形式であると言っています。このクエリは「datetime値が正しくありません」というエラーを返します。 %d-%m-%Yを使用してください。
  2. 渡される値の異なる型を設定することで、その場で列のデータ型を変更することはできません。最初に値を更新してから、列のデータ型を変更する必要があります。

ので、要約:

mysql_query("UPDATE `Table` SET `date` = STR_TO_DATE(`date`, '%d-%m-%Y')"); 
mysql_query("ALTER TABLE `Table` CHANGE COLUMN `date` `date` DATE"); 

また、古いものとslowly deprecatedmysql拡張の代わりに推奨PDO延長への切り替えを検討してください。

0

、あなたは桁を表示するには桁の年

mysql_query("UPDATE Table SET date=DATE_FORMAT(date,'%y-%m-%d')");

  • を表示するにはdate機能

  • 1
    1. を使用することができます年

      mysql_query("UPDATE Table SET date=DATE_FORMAT(date,'%Y-%m-%d')");

    +0

    このクエリは、フィールドは「TINYTEXT」ではないDATEまたはTIMESTAMPであるので、それはおそらくです...形式を変換しません。 – mustafa

    +0

    変数 'date'はvarchar型ですか? –

    +0

    タイトなタイプです。 – mustafa

    1

    DATE_FORMAT()機能でそれを試してみてください。

    mysql_query("UPDATE Table SET date=DATE_FORMAT(date,'%Y,%m,%d')"); 
    
    1

    私はあなたがこれをしなければならないと言うだろう:あなたのクエリで

    UPDATE table_name SET date = DATE_FORMAT('date', %Y-%m-%d); 
    
    5

    エラー

    はSTR_TO_DATE(日、 '%Y-%m-%d' では)であります

    mysql_query("UPDATE Table SET date=STR_TO_DATE(date,'%Y-%m-%d')"); 
    
    2

    これを試してみてください:

    INSERT INTO table(date_field) VALUES(STR_TO_DATE('December 8, 2010','%M %d,%Y')); 
    
    関連する問題