我已經用日期dd/mm/yyyy將一個CSV文件導入到mysql中 現在需要一個查詢將它從文本轉換爲日期格式YYY-MM-DD查詢sql轉換文本字段dd/mm/yyyy到日期字段yyyy-mm-dd
乾杯
S.
我已經用日期dd/mm/yyyy將一個CSV文件導入到mysql中 現在需要一個查詢將它從文本轉換爲日期格式YYY-MM-DD查詢sql轉換文本字段dd/mm/yyyy到日期字段yyyy-mm-dd
乾杯
S.
您可以使用MySQL的STR_TO_DATE(str, format)功能。
例如,用於轉換一個切換出my_date_col
:
BEGIN;
ALTER TABLE `date_test`
ADD COLUMN `my_date_col_converted` DATE;
UPDATE `date_test`
SET `my_date_col_converted` = STR_TO_DATE(`my_date_col`, '%d/%c/%Y');
ALTER TABLE `date_test`
DROP COLUMN `my_date_col`;
ALTER TABLE `date_test`
CHANGE COLUMN `my_date_col_converted` `my_date_col` DATE;
COMMIT;
您可以使用STR_TO_DATE()
通過以下方式來將文本信息轉換到一個DATE
:
STR_TO_DATE(datefield , "%d/%m/%Y")
如果需要此DATE
在一個特定的格式,你可以使用DATE_FORMAT()
。
這可能是沒有必要在你的情況,但在這裏是爲了完整的例子:
DATE_FORMAT(STR_TO_DATE(datefield , "%d/%m/%Y") , "%Y/%m/%d")
所以,你可以用一個單一的UPDATE
這樣做對整個表更換與重新格式化數據當前數據(同時保持數據類型相同):
UPDATE tableName
SET originalDate = DATE_FORMAT(STR_TO_DATE(originalDate,"%d/%m/%Y"),"%Y/%m/%d");
或者,如果你想列DATE
的數據類型轉換,你可以更改表創建一個新的DATE
格式化列,用上面的更新,以填補該列,刪除原來的列,和en(可選)將新列重命名爲舊名稱。
ALTER tableName
ADD modifiedDate DATE;
UPDATE tableName
SET modifiedDate = DATE_FORMAT(STR_TO_DATE(originalDate ,"%d/%m/%Y") ,"%Y/%m/%d");
ALTER tableName
DROP COLUMN originalDate;
ALTER tableName
CHANGE COLUMN modifiedDate originalDate;
它不能正常工作..您可以讓plaese演示一個小提琴演示。 – user1896796 2013-02-27 10:54:15
這應該工作,但它不會:
BEGIN;
ALTER TABLE `date_test`
ADD COLUMN `my_date_col_converted` DATE;
UPDATE `date_test`
SET `my_date_col_converted` = STR_TO_DATE(`my_date_col`, '%d/%c/%Y');
ALTER TABLE `date_test`
DROP COLUMN `my_date_col`;
ALTER TABLE `date_test`
CHANGE COLUMN `my_date_col_converted` `my_date_col` DATE;
COMMIT;
而且這應該工作:不工作
UPDATE db_test SET anticipated_court_date = DATE_FORMAT(STR_TO_DATE(anticipated_court_date,"%d/%m/%Y"),"%Y-%m-%d");
服務器版本:5.0.95社區日誌的MySQL Community Edition(GPL)
但是,這是有效的:
SELECT STR_TO_DATE('8/31/12', '%m/%d/%Y'); // WORKS
使用MySQL - 我找不到任何可靠工作的解決方案。即使是相同的確切日期也沒有成功轉換。
The solution I've found is this: PHP
$user_date = "8/31/12"; // WORKS
$mysql_date = date('Y-m-d H:i:s', strtotime($user_date));
以上是有幫助的,但下面的工作在我的Mysql。
ALTER TABLE `tablename` ADD `newcolumn` DATE NOT NULL ;
UPDATE `tablename` SET `newcolumn`=STR_TO_DATE(`oldcolumn`, '%d/%c/%Y')
現在刪除oldcolumn(如果你願意的話)。
謝謝,我會試試這個! – stefano 2010-11-10 15:24:15
請考慮標記其中一個答案,以便我們知道問題已關閉;) – conny 2010-11-15 02:19:21