2012-02-24 189 views
3

我有一個日期字段(tinytext),格式爲「dd-mm-yy」,例如07-01-90。使用mysql查詢我想將其更改爲yyyy-mm-dd日期格式。我嘗試了下面的代碼,但沒有任何反應。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 #function_date-format) – diEcho 2012-02-24 07:32:47

回答

6

您使用的是正確的功能STR_TO_DATE(str,format)要達到的目標,但你媽王兩個錯誤:

  1. 在查詢中format參數不匹配的字符串表達式格式。你說它是dd-mm-yy格式,而你通過%Y,%m,%d(逗號分隔)到format的說法。該查詢將返回「錯誤的日期時間值」錯誤。你應該使用%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

如果您使用的PHP my_sql,您可以使用date功能

1
  1. 要顯示位數的年份

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

  2. 要顯示位年份

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

+0

此查詢不轉換格式...它可能是因爲該字段是「tinytext」而不是DATE或TIMESTAMP。 – mustafa 2012-02-24 07:56:26

+0

你的意思是變量'date'是varchar類型? – 2012-02-24 10:29:31

+0

它是小文本類型。 – mustafa 2012-02-24 13:42:59

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-%間%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'));