Как вставить пустое значение в поле типа даты 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');