如何更新 mysql 中所有记录的日期格式

How to update date format in all records in mysql

我有一个数据类型为“Varchar”的字段“date_of_service”。目前我们插入 mm/DD/yyyy 格式的记录。现在我只想将格式更新为 yyyy-mm-dd。 我如何使用查询更新它们?

理想情况下,您应该将 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));

通过格式化解析日期更新:

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')

您应该在 table 中创建一个 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));