Вопрос: как вставить пустое значение в поле типа даты mysql?


Как вставить значение 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('Y-m-d', mktime(0,0,0,$m, $d, $y))."'";
}




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

ура


16


источник


Ответы:


Если это происходит, это потому, что столбец был определен с помощью NOT NULL или с default '0000-00-00', Вам нужно изменить определение столбца, чтобы разрешить NULLs и не имеют значения по умолчанию.

Ваша вставка должна также указывать NULL, а не '', если это то, что вы подразумеваете под «пустым значением».


19



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) ."', ";
    }

Это фиксировало это.


2



Просто опустите поле, когда вы делаете свою вставку.

Скажите, что ваш стол выглядит так:

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

Если вы хотите вставить что-то без даты, используйте:

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

0