【发布时间】:2015-04-04 11:27:21
【问题描述】:
我有一个包含数百个字段的数据库,但我的数据结构错误。目前是英国格式如下:
d/m /y
01/01/85
01/01/96
23/12/87
将日期批量更改为年/月/日的 sql 标准的最有效方法是什么
eg.
02/01/85 --> 1985/01/02
【问题讨论】:
我有一个包含数百个字段的数据库,但我的数据结构错误。目前是英国格式如下:
d/m /y
01/01/85
01/01/96
23/12/87
将日期批量更改为年/月/日的 sql 标准的最有效方法是什么
eg.
02/01/85 --> 1985/01/02
【问题讨论】:
在您的表中创建一个新的DATE 类型列:
ALTER TABLE myTable ADD newColumn DATE;
使用 MySQL 的 STR_TO_DATE() 函数将现有值解析到新列中:
UPDATE myTable SET newColumn = STR_TO_DATE(oldColumn, '%d/%m/%y');
更改您的代码库以使用新列。如果这不能立即发生,您可以定义 BEFORE INSERT 和 BEFORE UPDATE triggers 以保持新列与旧列一致:
CREATE TRIGGER myTable_bi BEFORE INSERT ON myTable FOR EACH ROW
SET NEW.newColumn = STR_TO_DATE(oldColumn, '%d/%m/%y');
CREATE TRIGGER myTable_bu BEFORE UPDATE ON myTable FOR EACH ROW
SET NEW.newColumn = STR_TO_DATE(oldColumn, '%d/%m/%y');
删除旧列:
ALTER TABLE myTable DROP oldColumn;
【讨论】:
select date_format(date, '%Y-%m-%d') 用这个把它改成需要的格式。我用过date_format函数。您可以获取更多关于date_formathere的信息
【讨论】: