29

我有一个名为的列today,类型是DATE.

当我尝试以格式添加日期时,'07-25-2012'出现以下错误:

无法运行查询:日期值不正确:列的“07-25-2012”

4

8 回答 8

39

由于 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; 
于 2012-07-25T00:39:14.913 回答
4

一般mysql使用这种日期格式'Ymd H:i:s'

于 2012-07-25T00:24:16.697 回答
3

您需要将日期转换为 YYYY-MM-DD 以便使用默认配置将其作为 MySQL 日期插入。

一种方法是STR_TO_DATE()

insert into your_table (...)
values (...,str_to_date('07-25-2012','%m-%d-%Y'),...);
于 2012-07-25T00:28:10.680 回答
2

这是日期格式

DATE 类型用于具有日期部分但没有时间部分的值。MySQL 以'YYYY-MM-DD'格式检索和显示 DATE 值。支持的范围是“1000-01-01”到“9999-12-31”。

当 MySQL 格式为 '2012-07-25' 时,为什么要插入 '07-25-2012' 格式?实际上,如果sql_modetraditional/strict modeelse 它只是输入 0000-00-00 并给出警告,则会出现此错误:1265 - Data truncated for column 'col1' at row 1

于 2012-07-25T04:40:01.703 回答
2

您需要使用 YYYY-MM-DD 格式在 mysql 中插入日期

于 2012-12-06T12:27:36.790 回答
1

您可以在创建表时使用“DATE”作为数据类型。这样就可以避免上述错误。例如:

CREATE TABLE Employee (birth_date DATE);
INSERT INTO Employee VALUES('1967-11-17');
于 2019-02-17T05:52:55.223 回答
1

我对这个错误有不同的原因。我试图在不使用引号的情况下插入日期,但收到一个奇怪的错误,告诉我我试图插入 2003 年的日期。

我的错误信息:

虽然我已经在使用 YYYY-MM-DD 格式,但我忘记在日期周围添加引号。即使它是日期而不是字符串,仍然需要引号。

于 2019-12-04T21:43:05.493 回答
0

您可以使用此代码。它会正常工作。

INSERT INTO table_name(today)  
VALUES(STR_TO_DATE('07-25-2012','%m-%d-%Y'));  

实际上,您不能直接将日期存储为字符串,您首先需要以我们使用STR_TO_DATE()函数的正确格式将字符串转换为日期,该函数需要两个参数,第一个是将日期作为字符串,第二个是您传递的日期格式你的第一个论点。

于 2021-09-09T06:40:21.593 回答