我有一个名为的列today
,类型是DATE
.
当我尝试以格式添加日期时,'07-25-2012'
出现以下错误:
无法运行查询:日期值不正确:列的“07-25-2012”
由于 MySql 在日期类型列中接受 ymd 格式的日期,因此您需要通过STR_TO_DATE
以下方式将日期转换为 yyyy-mm-dd 格式以便插入:
INSERT INTO table_name(today)
VALUES(STR_TO_DATE('07-25-2012','%m-%d-%y'));
同样,如果您想选择除Mysql格式以外的其他格式的日期,您应该尝试DATE_FORMAT
功能
SELECT DATE_FORMAT(today, '%m-%d-%y') from table_name;
一般mysql使用这种日期格式'Ymd H:i:s'
您需要将日期转换为 YYYY-MM-DD 以便使用默认配置将其作为 MySQL 日期插入。
一种方法是STR_TO_DATE()
:
insert into your_table (...)
values (...,str_to_date('07-25-2012','%m-%d-%Y'),...);
这是日期格式:
DATE 类型用于具有日期部分但没有时间部分的值。MySQL 以'YYYY-MM-DD'格式检索和显示 DATE 值。支持的范围是“1000-01-01”到“9999-12-31”。
当 MySQL 格式为 '2012-07-25' 时,为什么要插入 '07-25-2012' 格式?实际上,如果sql_mode是traditional/strict mode
else 它只是输入 0000-00-00 并给出警告,则会出现此错误:1265 - Data truncated for column 'col1' at row 1
。
您需要使用 YYYY-MM-DD 格式在 mysql 中插入日期
您可以在创建表时使用“DATE”作为数据类型。这样就可以避免上述错误。例如:
CREATE TABLE Employee (birth_date DATE);
INSERT INTO Employee VALUES('1967-11-17');
您可以使用此代码。它会正常工作。
INSERT INTO table_name(today)
VALUES(STR_TO_DATE('07-25-2012','%m-%d-%Y'));
实际上,您不能直接将日期存储为字符串,您首先需要以我们使用STR_TO_DATE()
函数的正确格式将字符串转换为日期,该函数需要两个参数,第一个是将日期作为字符串,第二个是您传递的日期格式你的第一个论点。