Как вставить пустое значение в поле типа даты mysql?
Как вставить NULL или пустое значение в поле типа даты mysql (NULL = yes).
Если я попытаюсь вставить пустое значение, оно вставляет 0000-00-00, но я хочу сохранить его пустым или NULL.
Спасибо за помощь.
UPDATE
Пожалуйста, убедитесь, что я установил значение по умолчанию как 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'])." ...."
Приветствия
Ответы
Ответ 1
Если это происходит, это потому, что столбец был определен с помощью NOT NULL
или с default '0000-00-00'
. Вам нужно изменить определение столбца, чтобы разрешить NULL
и не иметь значения по умолчанию.
Ваша вставка должна также указывать NULL, а не ''
, если это означает "пустое значение".
Ответ 2
phew.. немного боролся с этой нулевой вещью.
У меня был php script, который копирует, форматирует и сохраняет данные из одной базы данных A в базу данных B. В базе данных A имелось поле даты с значениями NULL. но когда я его скопировал, он стал 0000-00-00 в моей базе данных 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) ."', ";
}
Это исправлено.
Ответ 3
Просто опустите поле, когда вы делаете свою вставку.
Скажите, что ваш стол выглядит следующим образом:
CREATE TABLE mytable(
`name` VARCHAR(30) NOT NULL,
`payment_due_on` date DEFAULT NULL);
Если вы хотите вставить что-то без даты, используйте:
INSERT INTO mytable (name) VALUES ('name here');