2016-07-22 76 views
0

在數據庫導入期間,我有點亂了事。因此,現在我有一個DATE類型的日期列,但是年份和日期都在錯誤的地方,最後一天出現在年份列中,並且mysql已經將它自動格式化爲年份......進一步惡化的東西。mysql更新日期格式的表值%d-%m-%y到%y-%m-%d

我有一個表中的值如下面

dates(dddd-mm-yy) 
2030-05-12 
2021-06-13 
2012-12-13 

我希望他們像這樣

dates(yyyy-mm-dd) 
2012-05-30 
2013-06-21 
2013-12-12 

請注意,其實我想更新列,我已經看到,並試圖在SELECT很多例子

Thnx提前。

+0

這一欄是什麼類型的? 'varchar'? – Blank

+0

@JPG我的專欄是日期類型 –

+0

@JPG我編輯了我的問題一點。 thnx提前 –

回答

0

我不知道這是否可以歸類爲「解決方案」,也許更多的解決方法,但它對我來說工作完美無瑕。

閱讀this後,我意識到,我的問題開始時,我試圖導入我的日期,格式爲DD-MM-YY,因此Mysql的假定我一天是一年,並提出我的日期爲yydd-MM-YY

我的日期被格式化爲yydd-MM-YY和我個別試圖查詢

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

此查詢運行但沒有更改表,因爲它幫助我格式化我的日期在MySQL的眼睛yyyy-mm-dd從我導入我的數據庫時,但仍然我的日期是在yydd-mm-dd

所以我想,如果我嘗試一個查詢怎麼樣;

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

這樣Mysql的切換的日子,年歲,然後提供我的日期爲yyyy-MM-DD,相當令人困惑的事情Mysql的處理日期的方式,但像2030年5月12日的日期的最終結果是2012 -05-30。

0

你可以使用substring()和concat()來連接任何你想要的。以下是供您參考的語句(表格是tb_test,列名是col_date)。

update tb_test set col_date = concat('20',substring(col_date,7,2),'-',substring(col_date,4,2),'-',substring(col_date,1,2)); 
+0

很好的嘗試。但我在這裏搞了一個非常大的數據庫。其中一些日期可追溯到20世紀90年代 –

+0

儘管我想象的是2查詢解決方案。一個切換日期和年份的位置,另一個只是告訴mysql自動生成剩餘部分的年份。我不知道這樣做會在劇本里完成。 –

+0

如果列類型是日期,則很容易使用DATE_FORMAT(date_col,'%y-%m-%d')來隱藏它。我建議使用另一列來存儲更新的日期值。例如:update tb_test set new_date_col = DATE_FORMAT(date_col,'%y-%m-%d'); – King