【发布时间】:2021-11-03 06:50:54
【问题描述】:
我正在尝试这个,但它不起作用。我的原始数据格式为本月/日期/年(例如:2/24/20)
UPDATE Packages SET `date` = STR_TO_DATE(`date`, '%Y-%m-%d %T');
ALTER TABLE Packages MODIFY COLUMN `date` DATETIME;
【问题讨论】:
我正在尝试这个,但它不起作用。我的原始数据格式为本月/日期/年(例如:2/24/20)
UPDATE Packages SET `date` = STR_TO_DATE(`date`, '%Y-%m-%d %T');
ALTER TABLE Packages MODIFY COLUMN `date` DATETIME;
【问题讨论】:
您应该创建一个新的日期时间列并使用 STR_TO_DATE 和文本日期填充它:
ALTER TABLE Packages ADD COLUMN new_date DATETIME;
UPDATE Packages SET new_date = STR_TO_DATE(date, '%Y-%m-%d %T');
如果您愿意,也可以删除原来的 date 列,然后重命名新列:
ALTER TABLE Packages DROP COLUMN date;
ALTER TABLE Packages RENAME COLUMN new_date TO date;
【讨论】:
我的原始数据的格式类似于这个月/日期/年(例如:2/24/20)
使用与您当前格式匹配的解析模式的函数(函数需要用于解析的模式,而不是数据必须转换为的模式):
STR_TO_DATE(varchar_column, '%m/%e/%y')
寻找完整的模式描述there。
【讨论】: