【发布时间】:2012-07-25 00:20:37
【问题描述】:
我有一个名为today 的列,类型为DATE。
当我尝试以 '07-25-2012' 格式添加日期时,我收到以下错误:
无法运行查询:日期值不正确:列的“07-25-2012”
【问题讨论】:
我有一个名为today 的列,类型为DATE。
当我尝试以 '07-25-2012' 格式添加日期时,我收到以下错误:
无法运行查询:日期值不正确:列的“07-25-2012”
【问题讨论】:
由于MySql在日期类型列中接受y-m-d格式的日期,所以需要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;
【讨论】:
%Y 才能解析4位数的年份。
这是date format:
DATE 类型用于具有日期部分但没有时间部分的值。 MySQL 以 'YYYY-MM-DD' 格式检索和显示 DATE 值。这 支持的范围是“1000-01-01”到“9999-12-31”。
为什么 MySQL 格式为 '2012-07-25' 时要插入 '07-25-2012' 格式?实际上,如果 sql_mode 是 traditional/strict mode 则会出现此错误,否则它只会输入 0000-00-00 并发出警告:1265 - Data truncated for column 'col1' at row 1。
【讨论】:
在mysql中插入日期需要使用YYYY-MM-DD格式
【讨论】:
一般mysql使用这种日期格式'Y-m-d H:i:s'
【讨论】:
您可以在创建表时使用“DATE”作为数据类型。这样就可以避免上述错误。 例如:
CREATE TABLE Employee (birth_date DATE);
INSERT INTO Employee VALUES('1967-11-17');
【讨论】:
您需要将日期转换为 YYYY-MM-DD 以便使用默认配置将其作为 MySQL 日期插入。
一种方法是STR_TO_DATE():
insert into your_table (...)
values (...,str_to_date('07-25-2012','%m-%d-%Y'),...);
【讨论】:
您可以使用此代码。它会正常工作的。
INSERT INTO table_name(today)
VALUES(STR_TO_DATE('07-25-2012','%m-%d-%Y'));
实际上你不能直接将日期存储为字符串,你首先需要将字符串转换为正确格式的日期,我们使用STR_TO_DATE()函数,它需要两个参数,第一个是日期作为字符串,第二个是日期您传递第一个参数的格式。
【讨论】: