Как вставить пустое значение в поле типа даты MySQL? - PullRequest
16 голосов
/ 16 июля 2009

Как вставить NULL или пустое значение в поле типа даты mysql (NULL = yes).

Если я пытаюсь вставить пустое значение, оно вставляет 0000-00-00, но я хочу оставить его пустым или NULL.

Спасибо за помощь.

UPDATE

Пожалуйста, обратите внимание, что я установил значение по умолчанию как 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'])." ...."

Приветствия

Ответы [ 3 ]

19 голосов
/ 16 июля 2009

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

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

2 голосов
/ 04 февраля 2010

тьфу .. немного боролся с этой ноль.

У меня был php-скрипт, который копирует, форматирует и сохраняет данные из одной базы данных 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) ."', ";
    }

Это исправлено.

0 голосов
/ 16 июля 2009

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

Скажите, что ваш стол такой:

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

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

INSERT INTO mytable (name) VALUES ('name here');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...