2009-07-16 97 views
15

如何在mysql日期類型字段中插入NULL或空值(NULL = yes)。如何在mysql日期類型字段中插入一個空值?

如果我嘗試插入一個空值,它將插入0000-00-00,但我想保留它爲空或NULL。

感謝您的幫助。

UPDATE

請看到我設置的默認值NULL

`payment_due_on` date DEFAULT NULL, 

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

乾杯

+0

你實際上是插入一個空字符串還是真NULL? (或不指定任何東西)也許空字符串被解釋爲0000-00-00 – HerdplattenToni 2009-07-16 14:03:37

回答

18

如果發生這種情況,這是因爲該列已被定義爲NOT NULLdefault '0000-00-00'。您需要更改列定義以允許NULL s,並且沒有默認值。

您的插入應該指定爲NULL,而不是'',如果這就是您的意思是「空值」。

+0

我已經提到,我已經將NULL = yes和默認值設置爲NULL。 – TigerTiger 2009-07-16 13:42:34

0

只要在插入時省略該字段即可。

說你的表是這樣的:

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

如果要插入一些不帶日期,用途:

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

唷..與此空的東西有點掙扎。

我有一個PHP腳本,可以將數據從一個數據庫A複製,格式化並存儲到數據庫B.數據庫A中有一個帶NULL值的日期字段。但是當我複製它時,它在我的數據庫B中變成了0000-00-00。

終於弄清楚這是因爲我把單引號放在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) ."', "; 
    } 

這就修正了它。

相關問題