如何在mysql日期类型字段中插入空值?

时间:2009-07-16 13:37:03

标签: php mysql date

如何在mysql日期类型字段中插入NULL或空值(NULL = yes)。

如果我尝试插入一个空值,它会插入稿件,但我想把它保持为空或NULL。

感谢您的帮助。

更新

请注意我已将默认值设置为NULL

  `payment_due_on` date DEFAULT NULL,

Ok Okies

我现在有了它的工作

function get_mysqlDate($date, $delimiter='/') {
    if(check_empty($date)) {
        return 'NULL';
    }
    list($d, $m, $y) = explode($delimiter, $date);
    //$datetime = strtotime($date);
    return "'".date('Y-m-d', mktime(0,0,0,$m, $d, $y))."'";
}




"... SET mydate = ".get_mysqldate($_POST['mydate'])." ...."

干杯

3 个答案:

答案 0 :(得分:19)

如果发生这种情况,那是因为该列已定义为NOT NULLdefault '0000-00-00'。您需要更改列定义以允许NULL s并且没有默认值。

你的插入也应该指定NULL,而不是'',如果你的意思是“空值”。

答案 1 :(得分:2)

phew ..正在努力解决这个零点问题。

我有一个PHP脚本,可以将数据从一个数据库A复制,格式化并存储到数据库B.数据库A中有一个带有NULL值的日期字段。但是当我复制它时,它在我的数据库B中变成了算法。

最后弄清楚是因为我在NULL('NULL')周围放置单引号。

$started_date = mysql_result($databaseA['result'],$i,"start_date");

    if (empty($published_at_date)){
     $insert_sql .= "NULL,  ";
    } 
    else 
    {
     $insert_sql .= " '" . mysql_real_escape_string($started_date) ."', ";
    }

这解决了它。

答案 2 :(得分:0)

在进行插入时只需省略该字段。

说你的桌子是这样的:

CREATE TABLE mytable(
`name` VARCHAR(30) NOT NULL,
`payment_due_on` date DEFAULT NULL);

如果您想插入没有日期的内容,请使用:

INSERT INTO mytable (name) VALUES ('name here');