如何在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'])." ...."
干杯
答案 0 :(得分:19)
如果发生这种情况,那是因为该列已定义为NOT NULL
或default '0000-00-00'
。您需要更改列定义以允许NULL
s并且没有默认值。
你的插入也应该指定NULL,而不是''
,如果你的意思是“空值”。
答案 1 :(得分:2)
我有一个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');