2014-06-24 54 views
0

我似乎遇到了在MySQL 5.6中的DATE字段中插入NULL的问题。错误是错误代码:1292.错误的日期值:''在第1行的列'StartDate'。将NULL插入DATE字段MySQL 5.6

以下是表格说明。 StartDate和EndDate都是DATE类型,NULLABLE和默认值NULL。

有效位(1)NO B'1'
ClientContact VARCHAR(255)YES
ClientID的INT(11)无符号NO MUL
ClientReferenceNumber VARCHAR(100)YES
说明MEDIUMTEXT YES
结束日期日期YES
HourlyRate十进制(6,2)YES
时间INT(11)YES
注释文本YES
OffShoreAmount十进制(10,2)YES
OnSh oreAmount十进制(10,2)YES
ParentWorkOrderID INT(11)无符号YES MUL
ReferenceNumber VARCHAR(100)YES
的StartDate日期YES
总金额十进制(10,2)YES
WorkOrderID INT(10)无符号NO PRI auto_increment WorkOrderTypeID int(10)unsigned NO MUL

但是以下查询不起作用。

INSERT INTO WorkOrder 
    (ParentWorkOrderID, WorkOrderTypeID, ClientID, ReferenceNumber, ClientReferenceNumber, 
    Description, StartDate, EndDate, OnShoreAmount, OffShoreAmount, TotalAmount, HourlyRate, 
    Hours, Notes, Active, ClientContact) 
VALUES (NULL, 1, 89, 'et-care-001', 'HG453443', '', '', '', 10, 0, 10, NULL, NULL, 
     '', 1, 'Jebus'); 

INSERT INTO WorkOrder 
    (ParentWorkOrderID, WorkOrderTypeID, ClientID, ReferenceNumber, ClientReferenceNumber, 
    Description, StartDate, EndDate, OnShoreAmount, OffShoreAmount, TotalAmount, HourlyRate, 
    Hours, Notes, Active, ClientContact) 
VALUES (NULL, 1, 89, 'et-care-001', 'HG453443', '', '', '', 10, 0, 10, 'NULL', 'NULL', 
     '', 1, 'Jebus'); 

我很积极,这是MySQL 5.5的工作。将null插入字段的正确方法是什么?

+1

你没有插入'NULL',你插入一个空字符串。 – shmosel

+0

Ahhh你是对的,在合并期间PHP代码发生了一些事情,并且值和列的顺序是错误的 – greyfox

回答

0

插入NULL而不是''。此外,'Null'不等于NULL

INSERT INTO WorkOrder (
    ParentWorkOrderID, 
    WorkOrderTypeID, 
    ClientID, 
    ReferenceNumber, 
    ClientReferenceNumber, 
    Description, 
    StartDate, 
    EndDate, 
    OnShoreAmount, 
    OffShoreAmount, 
    TotalAmount, 
    HourlyRate, 
    Hours, 
    Notes, 
    Active, 
    ClientContact 
    ) VALUES (
    NULL, 
    1, 
    89, 
    'et-care-001', 
    'HG453443', 
    '', 
    '',   
    '', 
    10, 
    0, 
    10, 
    NULL, 
    NULL, 
    NULL, 
    1, 
    'Jebus'); 
0

正确的方法插入空到现场是使用NULL

例如,对于某个字段,您可以指定值,如'thisisastring'1NULL也是有效的,只有在该字段允许空值时才可以接受。注意:''表示空字符串,不为空,'null'表示包含单词null的字符串。

对于空检查你使用IS NULLIS NOT NULL

希望有所帮助。