MySQL 插入日期

MySQL inserting date

这是我的MySQL代码:

UPDATE student SET birthDate = STR_TO_DATE(birthDate, '%M %d,%Y');

INSERT INTO student (`birthDate`) VALUES ('June 10,1997');

但是显示错误:

Error code 1292, SQL state 22001: Data truncation: Incorrect date value: 'June 10,1997' for column 'birthDate' at row 1

如果要在列中插入日期,请​​使用正确的日期语法:

INSERT INTO student (`birthDate`)
   VALUES ('1997-06-10');
INSERT INTO student SET birthDate='1997-06-10'

SQL 使用了一种非常特殊的日期格式,即 'YYYY-MM-DD'.

一旦采用该格式,您就可以将其作为文本插入(例如,不需要 STR_TO_DATE)。

示例:“1997-06-10”

STR_TO_DATE() returns 根据提供的字符串和字符串格式正确格式化的日期。

下面的 INSERT 可以正常工作

INSERT INTO student (`birthDate`) VALUES (STR_TO_DATE('June 10,1997', '%M %d,%Y'));

因为SELECT STR_TO_DATE('June 10,1997', '%M %d,%Y')returns1997-06-10

如果 birthDate 字段是日期字段,您提供的更新查询将不起作用,因为它不可能已经包含格式为 m d,Y 的日期(您正在就地更新列值)

如果您在 varchar 列中有一列日期(例如,birthDate_mdY),那么您可以将它们转换为这样的日期字段

UPDATE student SET birthDate = STR_TO_DATE(birthDate_mdY, '%M %d,%Y')