2012-08-24 102 views
0

我有一個DATE列,日期格式爲2012-02-25。我需要更新到12-02-25,但不知道如何去解決它?在mySql中更新日期

謝謝!

編輯:審查所有答案後,似乎我還不夠清楚。我不想改變我的類型,我也不希望玩弄輸出。我想將現有日期列從2012年更新到12年。如果有任何內容,它應該是UPDATE查詢,我只是不確定如何編寫它。感謝迄今爲止的所有評論。編輯2:看來我的問題沒有意義,我不知道你不能將DATE存儲爲xx-xx-xx。無論如何謝謝!

+0

你想完成什麼?爲什麼你需要12而不是2012? – rmarimon

+0

這些日期是在JavaScript中提取的,我完全沒有理解,因此我想改變數據庫本身。謝謝! – Sherif

+0

你最好改變'SELECT'將數據轉換爲javascript並使用'DATE_FORMAT()'函數。 – rmarimon

回答

4

這是不可能保存日期格式'12-02-25'列中有DATE作爲數據類型。您可以在列具有數據類型存儲它作爲CHAR(8)然後使用以下UPDATE查詢:

UPDATE table_name 
SET date_column = DATE_FORMAT(date_column, '%y-%m-%d'); 

,但更好的方法是將其存儲在只有DATE格式並使用DATE_FORMAT功能,而從表中檢索數據。

+0

我看,謝謝澄清,我不知道你根本無法將它存儲爲xx-xx-xx。謝謝! – Sherif

+0

不客氣! :) – Omesh

0

您應該使用日期時間類型。否則,您將遇到一些問題(排序,與日期等有關)

您可以將日期的顯示更改爲輸出。

+0

不幸的是,改變輸出結果目前不是一種選擇,如果可能的話,它確實需要db分支。日期時間也行不通,我根本不想要這個時間;) – Sherif

+0

@Sherif:這個列是如何定義的?我*希望*它是「日期時間」或「日期」(不是「varchar」!)儘管如此,你總是可以使用mySQL [「DATE_FORMAT()」](http://davidwalsh.name/format-date-mysql-date_format)在日期時間和任何任意字符串格式之間進行相互轉換。 – paulsm4

+0

如果你想你可以做到這一點。但它不合邏輯。首先你應該使用varchar格式。您可以將日期存儲爲yy-mm-dd。 (在php $ date = date(「y-m-d」))但我指出。你會遇到一些問題。 – 2012-08-24 05:53:00

0

從我MySQL Reference:因爲世紀是未知 與

兩位數年份

日期值不明確。這些值必須解釋爲四位數字形式,因爲MySQL在內部使用四位數字存儲多年。

對於DATETIME,DATE和TIMESTAMP類型,MySQL的解釋使用這些規則不明確年份值指定的日期 :

範圍00-69的年值轉換爲2000年至2069年。

70-99範圍內的年份值轉換爲1970-1999。

對於YEAR,規則是相同的,與此異常:數值00 插入YEAR(4)的結果0000,而不是2000要指定 零YEAR(4),並將它被解釋爲2000 ,請將其指定爲 字符串'0'或'00'。

請記住,這些規則只是啓發式方法,可以提供合理的 猜測您的數據值的含義。如果MySQL 使用的規則不生成您所需的值,則必須提供含有四位數年份值的明確輸入 。

+0

謝謝,我讀過這些,這就是爲什麼我可以使用DATE;所用的日期是從2012年開始的,我相當確定,當我們到達2069年時,這個網站將會長久死去。我不會很快遇到模棱兩可的問題。 – Sherif

+0

@Sherif:好的,如果你已經閱讀過,你可能會理解MySQL使用四位數存儲多年的事實。所以如果你仍然想保持你的'日期'列完好無損,我認爲你可能需要使用四位數字格式。但是,您可能會創建一個['Year(2)'列](http://dev.mysql.com/doc/refman/5.1/en/year.html)來排序「hackishly」store – Sujay

+0

我可能當時被誤解了;你不能把它存儲爲12?難道它不會簡單地在內部解釋爲2012? – Sherif

1

使用MySQL date_format函數來顯示它您需要:

SELECT DATE_FORMAT(youdatecolumn, '%y-%m-%d') FROM yourtable 
+0

錯誤的答案。他想在數據庫中更新它,而不是「選擇」它 – babooney

+1

@babooney它真的取決於預期用途。正如@omesh所說,沒有辦法在「DATE」列中以不同方式存儲日期,因此可能使用「DATE_FORMAT」可能是一個合適的答案。 – rmarimon

0

示例代碼try代碼

public class MyDateParser { 

public static void main(String args[]) throws ParseException { 
    String s = "2011-03-27";// or 3/27/2011 

    SimpleDateFormat dateFormatter = s.length() == 9 ? new SimpleDateFormat(
      "yyyy-MM-dd") : new SimpleDateFormat("yyyy-MM-dd"); 
    Calendar calendar = Calendar.getInstance(); 
    Date date = dateFormatter.parse(s); 
    calendar.setTime(date); 



    SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yy-MM-dd"); 

    String strss = simpleDateFormat2.format(date); 
    System.out.println(strss); 

} 

}