这是我的MySQL代码:
UPDATE student SET birthDate = STR_TO_DATE(birthDate, '%M %d,%Y');
INSERT INTO student (`birthDate`) VALUES ('June 10,1997');
但它显示错误:
错误代码1292,SQL状态22001:数据截断:日期不正确 价值:' 1997年6月10日'专栏' birthDate'在第1行
答案 0 :(得分:1)
如果要在列中插入日期,请使用正确的日期语法:
INSERT INTO student (`birthDate`)
VALUES ('1997-06-10');
答案 1 :(得分:1)
SQL使用非常具体的日期格式,即' YYYY-MM-DD'。
您可以将其作为文本插入格式(例如,不需要STR_TO_DATE)。
示例:' 1997-06-10'
答案 2 :(得分:0)
INSERT INTO student SET birthDate='1997-06-10'
答案 3 :(得分:0)
STR_TO_DATE()
根据提供的字符串和字符串格式返回正确格式化的日期。
以下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')
返回1997-06-10
如果birthDate字段是日期字段,则您提供的更新查询将不起作用,因为它不可能已经包含md,Y格式的日期(您正在就地更新列值)
如果您在这种格式的varchar列(例如birthDate_mdY
)中有一列日期,则可以将其转换为这样的日期字段
UPDATE student SET birthDate = STR_TO_DATE(birthDate_mdY, '%M %d,%Y')