MySQL不正确的日期时间值:'09:40 AM'列

时间:2014-02-18 08:27:32

标签: mysql sql datetime

我尝试在表格中输入值,我收到了此错误

"Incorrect datetime value: '09:40 AM' for column"

CREATE TABLE Class_Section (
             crn char(5) NOT NULL Primary key,
             dept_code char(3) NOT NULL,
             course_num char(3) NOT NULL,
             meeting_days varchar(6) NULL ,
             start_time datetime NULL,
             end_time varchar(8)  NULL,
             campus_code varchar(3) NOT NULL,
             location varchar(6) NOT NULL,
             faculty_id char(4) NOT NULL,
             enrollment TINYINT NOT NULL,
             capacity TINYINT NOT NULL,
             );



INSERT INTO Class_Section (
       CRN, dept_code, course_num, meeting_days, start_time, end_time, campus_code, location, faculty_id, enrollment, capacity 
       ) 
VALUES ('20761', 'PSY', '101', 'MW', '09:40 AM', '11:10 AM', 'WC','E-527', 'F002', 40, 40
       );

谢谢

6 个答案:

答案 0 :(得分:1)

使用时间数据类型

在创建表格

时,您在列的末尾使用了逗号
CREATE TABLE Class_Section
(
 crn        char(5) NOT NULL Primary key,
 dept_code  char(3) NOT NULL,
 course_num char(3) NOT NULL,
 meeting_days   varchar(6) NULL ,
 start_time     Time NULL,
 end_time   Time NULL,
 campus_code    varchar(3) NOT NULL,
 location   varchar(6) NOT NULL,
 faculty_id char(4) NOT NULL,
 enrollment TINYINT NOT NULL,
 capacity   TINYINT NOT NULL
);

INSERT INTO Class_Section ( CRN, dept_code, course_num, meeting_days, start_time, end_time, campus_code, location, faculty_id, enrollment, capacity ) values ('20761', 'PSY', '101', 'MW', '09:40:00', '11:10:00', 'WC','E-527', 'F002', 40, 40);

Fiddle Demo

答案 1 :(得分:0)

这是你问题的SQL Fiddle

start_time的DateTime类型格式为'YYYY-MM-DD HH:MM'

答案 2 :(得分:0)

以此格式指定日期时间字段

    '9999-12-31 23:59:59'

答案 3 :(得分:0)

  

任务将start_time称为datetime

除非您传递 date 值,但 time ,作为 datetime 字段输入的一部分,引擎将无法理解< em>只是时间作为日期和时间。如果您在课程开始日期和结束日期有预先确定的日期和时间,则以MySQL可理解的格式输入它们。

如果您单独设置日期和时间值,则可以将它们组合在一起以形成日期时间值。
以下是一些例子:

示例1
如果您将日期和时间作为单独的值:

insert into tbl( col_of_type_datetime ) values( curdate(), '09:40 AM' );
insert into tbl( col_of_type_datetime ) values( '2014-02-18', '09:40 AM' );

示例2
如果您有已知的时间戳值:

insert into tbl( col_of_type_datetime ) values( now() );
insert into tbl( col_of_type_datetime ) values( '2014-02-18 15:10:34' );

示例3
如果您只有日期但现在时间值:

insert into tbl( col_of_type_datetime ) values( cast( curdate() as datetime ) );
insert into tbl( col_of_type_datetime ) values( curdate() );
insert into tbl( col_of_type_datetime ) values( cast('2014-02-18' as datetime) );
insert into tbl( col_of_type_datetime ) values( '2014-02-18' );

答案 4 :(得分:-1)

检查您是否已宣布

start_time datetime ,

end_time varchar(8)

但插入时,您正在发送'09:40 AM', '11:10 AM'。所以请检查一下你的数据类型。

答案 5 :(得分:-3)

因为你将start_time声明为datetime为NULL,而mysql需要一个datetime值。 使用与end_time相同的类型(varchar(8)NULL)