将 NULL 插入 DATE 字段 MySQL 5.6

Posted

技术标签:

【中文标题】将 NULL 插入 DATE 字段 MySQL 5.6【英文标题】:Insert NULL into DATE field MySQL 5.6 【发布时间】:2014-08-15 00:09:54 【问题描述】:

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

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

有效位(1) NO b'1' ClientContact varchar(255) 是 ClientID int(11) 无符号 NO MUL ClientReferenceNumber varchar(100) 是 说明 mediumtext 是 EndDate 日期 是 HourlyRate decimal(6,2) 是 小时 int(11) 是 备注文本是 OffShoreAmount 小数(10,2) 是 OnShoreAmount 十进制 (10,2) 是 ParentWorkOrderID int(11) 无符号 YES MUL ReferenceNumber varchar(100) 是 开始日期日期是 TotalAmount decimal(10,2) 是 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 插入字段的正确方法是什么?

【问题讨论】:

您插入的不是NULL,而是一个空字符串。 啊,你是对的,php 代码在合并期间发生了一些事情,并且值和列的顺序错误 【参考方案1】:

在字段中插入 null 的正确方法是使用 NULL

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

对于空值检查,您可以使用 IS NULLIS NOT NULL

希望对您有所帮助。

【讨论】:

【参考方案2】:

插入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');

【讨论】:

以上是关于将 NULL 插入 DATE 字段 MySQL 5.6的主要内容,如果未能解决你的问题,请参考以下文章

将 null 插入 MS Access 中的日期/时间字段-

MySql 5.7 版本不允许在日期时间字段中插入完整日期*

如何从XML *向SQL Server DATE字段*中插入NULL

mysql 在值为null的字段插入数据!

当我将图像插入 MySQL 表时,结果为 NULL

PHP - 将日期插入mysql