2009-07-16 15 views
15

Jak wstawić NULL lub pustą wartość w polu typu daty mysql (NULL = yes).jak wstawić pustą wartość w polu typu daty mysql?

Jeśli spróbuję wstawić pustą wartość, wstawia ona 0000-00-00, ale chcę ją pozostawić pustą lub NULL.

Dzięki za pomoc.

UPDATE

Proszę zobaczyć, że mam ustawić domyślną wartość NULL

`payment_due_on` date DEFAULT NULL, 

Ok OKies

Mam to działa teraz

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'])." ...." 

Cheers

+0

Czy wstawiasz pusty łańcuch lub naprawdę NULL? (lub niczego nie precyzuje) Może pusty ciąg jest interpretowany jako 0000-00-00 – HerdplattenToni

Odpowiedz

18

Jeśli tak się dzieje, to dlatego, że kolumna została zdefiniowana jako NOT NULL lub z default '0000-00-00'. Musisz zmienić definicję kolumny, aby zezwalać na NULL s i nie mieć wartości domyślnej.

Twój wkład również powinien określać NULL, a nie '', jeśli masz na myśli "pustą wartość".

+0

Wspominałem, że ustawiłem NULL = yes i wartość domyślną również jako NULL. – TigerTiger

+1

I masz NULL nie "NULL" w zestawieniu? "WSTAW ... WARTOŚCI (NULL, 1, 2)" – VolkerK

0

Po prostu pomiń pole, gdy robisz wkładkę.

Say tabela jest tak:

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

Jeśli chcesz wstawić coś bez daty, użycia:

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

uff .. zmagała się z tym pustym rzeczy nieco.

Miałem skrypt php, który kopiuje, formatuje i przechowuje dane z jednej bazy danych A do bazy danych B. W bazie danych A było pole z wartościami NULL. ale kiedy skopiowałem to stało się 0000-00-00 w mojej bazie danych B.

w końcu zrozumiałem, że to dlatego, że umieszczałem pojedyncze cytaty wokół NULL jak ("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) ."', "; 
    } 

Naprawiono to.

Powiązane problemy