嘿,我有一個SQL表,它有一個用於存儲日期的列,但日期列具有類型varchar。我想將類型更改爲日期,但我不希望實際數據在該列中丟失。我怎樣才能做到這一點。更改SQL中的列類型
手動備份表格,然後輸入每個條目?或者還有其他一些很酷的方法來做到這一點?其實數據是巨大的
感謝
嘿,我有一個SQL表,它有一個用於存儲日期的列,但日期列具有類型varchar。我想將類型更改爲日期,但我不希望實際數據在該列中丟失。我怎樣才能做到這一點。更改SQL中的列類型
手動備份表格,然後輸入每個條目?或者還有其他一些很酷的方法來做到這一點?其實數據是巨大的
感謝
我這樣做的方式:
(1)添加新的列:
ALTER TABLE yourtable
ADD COLUMN `new_date` DATE NULL AFTER `views`;
(2)更新新列
UPDATE yourtable SET new_date = old_date;
採取DATAS在old_date
格式的照顧。如果它沒有格式化爲yyyy-mm-dd
,那麼您可能必須在STR_TO_DATE
或這個UPDATE
-statement中的一些字符串替換符合您的目的。
例子:
如果你的數據是這樣的:mmmm dd, yyyy, hh:mm
(體育May 17, 2012, 8:36 pm
),您可以更新這樣的:
UPDATE yourtable
SET new_date = STR_TO_DATE(old_date, "%M %e, %Y");
STR_TO_DATE
基本上扭轉工程師字符串數據的日期值。
(3)刪除舊列
ALTER TABLE yourtable
DROP COLUMN `old_date`;
(4)重命名新列
ALTER TABLE yourtable
CHANGE `new_date` `old_date` DATE NULL;
完成!
你能否提供一些步驟2的示例代碼。日期欄包含這樣的內容,目前2012年5月17日,8:36 pm,我想要像2012-05-17 –
I運行這個查詢它說沒有行受到影響... UPDATE mc_boxes_has_downloads SET new_date = DATE_FORMAT(old_date,'%Y-%m-%d'); –
我已經添加了一個示例。目前的格式是什麼? – Bjoern
使用此查詢:
ALTER TABLE tablename MODIFY COLUMNNAME Datatype
例如
ALTER TABLE Users MODIFY RegisterDate DateTime
添加數據類型,你想要一個新列,然後運行更新查詢將數據從舊的列複製到新列。然後刪除舊列。
請注意,也許您將不得不使用CONVERT函數將日期字符串轉換爲日期時間。
什麼:
1)添加新列的權利類型
2)刪除舊列
更新解析日期
3)更新您的新列填寫日期格式解析要求:
SELECT STR_TO_DATE('May 17, 2012, 8:36 pm','%M %d, %Y');
您能否提供一些步驟2的示例代碼。日期列包含這樣的內容,目前2012年5月17日,晚上8:36,我想要2012-05-17 –
這是簡單如SELECT STR_TO_DATE('2012年5月17日,晚上8:36','%M%d,%Y'); –
我正在嘗試此更新mc_boxes_has_downloads SET new_date = STR_TO_DATE(date,'%Y-%m-%d');但它不影響任何行 –
可能重複[MYSQL:如何將包含日期的VARCHAR列轉換爲DATE列?](http://stackoverflow.com/questions/4223971/mysql-how-to-convert-varchar-column-containing-dates -to-date-column) –