Как вставить значение NULL или пустое значение в поле типа даты mysql (NULL = yes).
Если я попытаюсь вставить пустое значение, оно вставляет 0000-00-00, но я хочу сохранить его пустым или NULL.
Спасибо за помощь.
ОБНОВИТЬ
Посмотрите, что я установил значение по умолчанию как NULL
`payment_due_on` date DEFAULT NULL,
Ок Окис
Сейчас у меня это работает
function get_mysqlDate($date, $delimiter='/') { if(check_empty($date)) { return 'NULL'; } list($d, $m, $y) = explode($delimiter, $date); //$datetime = strtotime($date); return "'".date('Ym-d', mktime(0,0,0,$m, $d, $y))."'"; } "... SET mydate = ".get_mysqldate($_POST['mydate'])." ...."
ура
Если это происходит, это потому, что столбец был определен с NOT NULL
или с по default '0000-00-00'
. Вам нужно изменить определение столбца, чтобы разрешить NULL
s и не иметь значения по умолчанию.
Ваша вставка должна также указывать NULL, а не ''
, если это то, что вы подразумеваете под «пустым значением».
phew .. немного боролся с этой нулевой вещью.
У меня был php-скрипт, который копирует, форматирует и хранит данные из одной базы данных A в базу данных B. В базе данных A имелось поле даты с значениями NULL. но когда я скопировал его, он стал 0000-00-00 в моей базе данных B.
наконец, выяснили, что это было потому, что я добавлял одинарные кавычки вокруг NULL like («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) ."', "; }
Это фиксировало это.
Просто опустите поле, когда вы делаете свою вставку.
Скажите, что ваш стол выглядит так:
CREATE TABLE mytable( `name` VARCHAR(30) NOT NULL, `payment_due_on` date DEFAULT NULL);
Если вы хотите вставить что-то без даты, используйте:
INSERT INTO mytable (name) VALUES ('name here');