【发布时间】:2022-01-16 04:55:22
【问题描述】:
我有一个数据类型为“Varchar”的字段“date_of_service”。目前我们以 mm/DD/yyyy 格式插入记录。现在我只想将格式更新为 yyyy-mm-dd。 如何使用查询更新它们?
【问题讨论】:
标签: mysql mysql-workbench
我有一个数据类型为“Varchar”的字段“date_of_service”。目前我们以 mm/DD/yyyy 格式插入记录。现在我只想将格式更新为 yyyy-mm-dd。 如何使用查询更新它们?
【问题讨论】:
标签: mysql mysql-workbench
通过格式化解析日期更新:
update mytable set
date_of_service = date_format(str_to_date(date_of_service, '%m/%d/%Y'), '%Y-%m-%d`)
或者,使用正则表达式!
update mytable set
date_of_service = regexp_replace(date_of_service, '(.*)/(.*)/(.*)', '\\3-\\1-\\2')
【讨论】:
理想情况下,您应该将date_of_service 字段设置为日期列。话虽如此,如果您想将其保留为文本但更改格式,请使用:
UPDATE yourTable
SET date_of_service = DATE_FORMAT(STR_TO_DATE(date_of_service, '%m/%d/%Y'),
'%Y-%m-%d');
另一种方法,使用子串操作:
UPDATE yourTable
SET date_of_service = CONCAT(RIGHT(date_of_service, 4), '-',
LEFT(date_of_service, 2), '-',
SUBSTRING(date_of_service, 4, 2));
【讨论】:
您应该在表中创建一个带有 DATE 类型的新字段,可能称为 new_date。
您必须使用 SUBSTRING 函数分隔旧日期,例如,字符串的第一个位置是 1,因此年份位置从 7 开始并占用 4 个字符。代码将是这样的:
UPDATE your_table SET new_date = CONCAT(SUBSTRING(old_date,7,4),'-',SUBSTRING(old_date,1,2),'-',SUBSTRING(old_date,4,2));
【讨论】: