Mysql 更改SQL表中的日期格式

Mysql 更改SQL表中的日期格式,mysql,sql,date,mysql-workbench,Mysql,Sql,Date,Mysql Workbench,我的歌曲表中当前有一个发布日期(日期)。我一直在尝试更改日期格式。当前格式为yyyy-mm-dd。我想要mm/dd/yyyy 错误:无效的日期值。无法“更新”MySQL日期的内部格式。如果要将文本显示为mm/dd/yyyy,则只需调用DATE\u格式,例如 SELECT DATE_FORMAT('2019-07-29', '%m/%d/%y') 其中打印: 07/29/19 Release\u Date作为Date而不是字符串存储在数据库中,因此您不需要调用str\u to\u Date

我的歌曲表中当前有一个发布日期(日期)。我一直在尝试更改日期格式。当前格式为yyyy-mm-dd。我想要mm/dd/yyyy

错误:无效的日期值。

无法“更新”MySQL日期的内部格式。如果要将文本显示为
mm/dd/yyyy
,则只需调用
DATE\u格式
,例如

SELECT DATE_FORMAT('2019-07-29', '%m/%d/%y')
其中打印:

07/29/19

Release\u Date
作为
Date
而不是字符串存储在数据库中,因此您不需要调用
str\u to\u Date
函数。您将收到一个错误,因为您正在对已经是日期而不是字符串的对象调用
str_to_date
函数

此外,由于它是一个日期,所以不能将该字段更新为字符串值。您必须创建一个定义为字符串的新列,并在其中存储日期

但是,将日期存储为
Date
字段非常有利,因为比较、排序和各种日期函数都将正常工作

因此,如果希望以不同的格式使用日期,只要在访问时使用
date\u格式(Release\u date,'%m/%d/%Y')
,并将字段保留为本机日期,如中所示

SELECT DATE_FORMAT(Release_Date,'%m/%d/%Y') FROM Songs WHERE Release_DATE IS NOT NULL;

正如Tim所建议的,您不需要更改现有的日期格式和值,但是如果您坚持,您可以在表中添加另一列-datatype VARCHAR-然后根据所需的日期格式更新该列。步骤如下:

  • 创建新列
  • 使用所需的日期格式更新新列

请记住,通过这样做,您不能期望该列直接识别任何与日期格式相关的函数。假设您运行这样的查询
SELECT*FROM songs,其中rls_date=CURDATE()不起作用。

我的日期格式正确,数据类型为date。它们已经存在于列中,我想更新格式。您不能/不需要这样做。MySQL日期存储为4字节整数,而不是可读字符串。实际上,当您检索一个日期而不显式格式化它时,默认情况下MySQL会将它格式化为
YYYY-MM-DD
。血淋淋的细节在这里
ALTER TABLE songs
ADD COLUMN `rls_date` VARCHAR(50) AFTER `release_date`;
UPDATE songs SET `rls_date`=DATE_FORMAT(`Release_Date`,'%m/%d/%Y');